Cache resources in caching classloaderThis is especially important for looking up plugin descriptorsfor missing plugins. For instance, in a build with 100 projectswhich all call `plugins.withId('foo')`, the plugin descriptor forthe 'foo' plugin would be looked up 100 times, because each projectcould potentially contain it. Every one of those lookups will usually hitthe same classloader (if all dependencies are defined in the root project).Caching those lookups improves configuration time a lot in those cases.
classloader caching - hashCode/equals for some CL implsAdded hashCode/equals implementation for CachingClassLoader and MultiParentClassLoader. This way caching of the classloaders works correctly. Without this, there are lots of cache misses due to parent classloader not matching.+review REVIEW-5219