Mark out an mmodule API surface / add bi-dir deps

This commit introduces the term "mmodule" in place of
"module" for the thing that is being prototyped;
"module" is a heavily overloaded term so
the extra "m" is intended to make it easier to track /
understand what "type of" module is involved.

Important parts of this commit:
 + {simple mmodule}.TestClass has been renamed to
   DemoSimpleClass to distinguish it from a test and new
   similar class being added in libart (DemoLibartClass).
 + Adds the @IntraCoreMModuleApi annotation; it is used to
   indicate API members that form part of a "core" mmodule
   contract (either incoming or outgoing dependency of a
   libcore mmodule) that must be kept stable.
 + Annotates parts of the DemoSimpleClass to make them part
   of the "simple mmodule API" contract.
 + Adds a method in the simple mmodule that isn't annotated
   to demonstrate (Java) public methods that are not part
   of the mmodule contract.
 + Includes a new target "core-simple.mmodule.stubs"
   which generates the simple mmodule API stubs.
 + Includes a new target "core-all.mmodule.stubs"
   which generates the mmodule API stubs for the core-all
   library.
 + Adds bi-direction dependencies between parts of the
   boot classpath. This makes the code a more realistic part
   of "core" for prototyping / demostration purposes:
   - DemoSimpleClass (now) has a method that calls through
     to a method on DemoLibartClass to demonstrate a
     dependency from {simple mmodule} onto core-libart.
   - DemoLibartClass has a similar arrangement going in the
     other direction making core-libart depend on {simple
     mmodule} (making a bi-dir dependency but without an
     infinite loop at runtime).
  + A test has been added for DemoLibartClass in the
    CtsLibcoreSimpleMModuleTestCases to confirm the bi-dir
    behavior in an automated test.

Bug: 113148576
Test: make checkbuild / make cts
Test: CTS: run cts -m CtsLibcoreSimpleModuleTestCases
Change-Id: I5564d6be61eba4c0116e91c601e32208da104f02
11 files changed