Progress towards pointer members in CStructs.

CArrays and CPointers should work now, but CStructs inside CStructs are
broken, due to a wrinkle in how we dynamically generate and load classes.
Refactor ByteClassLoader interface.

Now, instead of creating a new class loader each time we generate a Java class
at runtime, the REPRs that do this (P6Opaque and CStruct) have a static member
used to do it.

The motivation for this is that CStruct-generated classes need to be able to
reference previously generated classes (for structs of structs). But if each
class is generated from a separate loader that's not possible, since they come
from sibling ClassLoaders.

This should also reduce overall memory consumption a bit, as all
P6Opaque-REPRd (Perl) classes will now share a single ClassLoader, rather than
all of them having their own loader with a single class in it.
Fix braino in CStructInstance.

CStructs can now contain natives, strings, arrays and pointers. Structs of
structs are broken, but the reason why isn't entirely clear.