Wrap the root of the class loader scope graph in a caching class loader.

It turns out that filtering class loaders impose a non negligible overhead due to it using no internal caching of its decisions. Wrapping a filtering class loader in a caching class loader is generally dangerous as a filtering classloader's set of what to filter is mutable, but in this case we can reasonably guarantee that the definition of what to filter won't change.