Extract abstract classes from SimpleJavaPluginLoader and *Handle

and reuse them in the annotated stuff.
Implement the PluginManager