Update instrumentation support for non-java debuggable runtimes

Support for debugger features wasn't consistent in non-debuggable
runtimes earlier. This CL unifies the support for debuggable /
non-debuggable runtimes and support debugger features more consistently
in non-debuggable runtime. Debug features are still supported on a best
effort basis for any methods on the stack when the debugger was
attached. Certain features like redefinition are still not supported.

This CL:
1. Replaces is_debuggable boolean with an enum with three states:
   NonJavaDebuggable, JavaDebuggable, JavaDebuggableAtInit
2. Adds support to switch between NonJavaDebuggable -> JavaDebuggable
   and vice versa.
3. Updates the checks for IsJavaDebuggable to check for
   JavaDebuggableAtInit or JavaDebuggable as required.

Test: art/test.py
Bug: 206029744
Change-Id: I1d072d8a1d215b70f3d2425b458b836a22af6812
33 files changed