Platform Compatibility framework: annotations & basic API.

The annotations form the basis of the new framework, allowing
compatibility change IDs to be defined, and targeted to apps based on
their targetSdkVersion.

No real implementation of the API is provided here, but callbacks are
defined to allow an implementation to be provided by higher levels of
the stack.

Further CLs will implement the APIs added here, add annotation processors
to process the break IDs and enforce some policy, and more. An internal
NDK API will also be added to allow use from C++ code.

The annotations and API are added in libcore to allow their use in all
necessary places. Compatibility changes may be implemented in libcore, in
frameworks/base or in other places. Putting the basic into libcore allows
their usage in all of these places.

Bug: 135010838
Test: m

Change-Id: Iac22820b6d83679d70ff6615790a2cbf783fc307
7 files changed