Cleaning up class objects, moving resolution logic into them.

Ref classes now store ClassReference objects to refer to super classes /
interface classes, as invokedynamic relies upon the implementation detail
that we grab classes stashed in the constant pool. In doing so,
invokedynamic is able to create temporary classes that do *not* get
registered with a ClassLoader, do *not* enter the permanent generation,
but yet are able to be accessed/used like any other class by simply
hacking them into the constant pool.

Now to change any places where we invoke resolution via typestring when we
have the actual class object!