Introduce ClassLoaderScope.

Attempts to model the class loader relationships more explicitly, and encapsulate class loader creation. It also allows lazy classloader creation (in a more obvious way than before) which allows short circuiting in the classloader hierarchy.