Tests basic functions in the jvmti plugin.

This tests that we are able to redefine methods/constructors on the
java.lang.Object class at runtime.

This also (indirectly) tests that we correctly handle reading annotations on
obsolete methods. This is something that is not normally done since there is no
way to get a reference to an obsolete method outside of the runtime but some
annotations on the Object class are read by the runtime directly.

NB This test cannot be run on the RI at the moment.

If this test starts failing during the doCommonClassRedefinition call it is
possible that the definition of Object contained in the base64 DEX_BYTES array
has become stale and will need to be recreated. The only difference from the
normal Object dex bytes is that (a) it contains only the bytes of the Object
class itself, and (b) it adds an
'invoke-static {p0}, Ljava/lang/Object;->NotifyConstructed(Ljava/lang/Object;)V'
to the <init> function.

It is also possible it could fail due to the pattern of allocations caused by
doing string concatenation or printing changing. In this case you should simply
update the expected.txt file.
