clean up how we get plugin.json from the plugin jar

it's still pretty ugly because you can't get the InputStream for a JarEntry without
having a reference to the Jar itself. This mean's we can't just return the JarEntry
directly and need to pull the same entry twice (once to check for plugin.json and
once to get the file)
add class_name to plugin.json
give PluginLoader the ability to load using plugin.json

rather than using the filename to get the plugin's class name
PluginLoader now checks for a classname in plugin.json first
if tht fails, it uses the filename
clean up output when installing plugin