Make AndroidFuture and ServiceConnector ready for module usage.

By moving to system APIs when applicable. Notable changes include:

1. Re-implement reading/writing Throwables from/to Parcel, without
Parcel private APIs.

2. Use the public API new Handler(Looper.getMainLooper()) instead of
Handler.getMain().

3. Use lambdas directly instead of PooledLambda, because the latter
would require bundling 20+ classes to bootclasspath for each module
using it, while AndroidFuture and ServiceConnector won't be creating a
great number of lambdas in a short time.

4. A bug that calls initCause() with the Throwable itself is fixed.

Bug: 158736025
Test: presubmit
Change-Id: I577da5a3bc4ed537123b7eceaa5addf8f7bb0d92
2 files changed