Introduce the CovariantReturnType annotation

This commit introduces the CovariantReturnType annotation
that can be used to prepare the Android platform for future
API changes associated with more specific return types on
subclass methods.

The annotation introduces platform bytecode for the new
form of the method as a synthetic overload of the original,
public version.

This commit contains a first example:

A change to ConcurrentHashMap made in OpenJDK 8. Android
cannot make this change without breaking apps that compile
against latest stubs but have to run on older releases. The
API change can only be made once apps will no longer be run
on devices without the synthetic version (without app tooling
changes to accelerate the switch).

This commit also introduces a test to confirm that the platform
bytecode is present in the old and new forms.

There are platform tooling changes associated with this commit.

Bug: 70661641
Test: CTS: run cts -m CtsLibcoreTestCases
Change-Id: I39c4152223aed34642169689cba39de313358655
4 files changed