Load extensions using a separate ExtensionClassLoader for each.

These changes will allow extensions to contain different versions of JAR files. Libraries in the DataCleaner lib directories will always get precedence.
Hmm, technically speaking there are no conflicts present in this test case, so the results doesn't pinpoint the area of worry (which would be if the Baz class was defined both in src/main/java and in the resource JAR. But I am OK with this, it seems sensible and if it works it works (and it's hard to test).