Keep Constable interface in boxed types

The Constable interface is only for internal consumption within libcore,
not exposed as public APIs until it's proven to be useful for external
consumers. As the surface doesn't become API, this change is reversible.

OpenJDK java.lang has many dependencies in java.lang.constant and the
Constable interface implemented by the boxed types, because all other
"constant" classes, e.g. Class, MethodHandle, CallSite, Enum, and
java.lang.invoke and the bootstrap methods will depend on this
Constable / ConstantDesc interface.

As invoke-custom byte code is supported on Android, these
java.lang.constant APIs are useful as the input argument of bootstrap
methods to generate a dynamic MethodHandle object. Unlike using
Class / MethodHandle as arguments, ClassDesc / MethodHandleDesc
implementation could choose not to load the Class / MethodHandle objects
into the runtime. It could avoid the circular dependency, but still
generate the desired byte codes or transformation.

Note that the API docs in java.lang.constant, especially the hidden
classes doesn't reflect the reality in ART, e.g. Short could represent
a native value in dex file. Ones shouldn't rely on java.lang.constant
API docs for its status on Android. However, the type and method
descriptor part is still mostly useful and accurate on Android.

Bug: 270698015
Test: m droid
Change-Id: If09b43a89b44edf8ebb46b400092e15a81eeb49e
9 files changed