Redid the plugin registering method and made it more sane

TODO:
Figure out a way to override the priority of individual methods in a
IPlugable object. This would be helpful for profiling tools and network
related stuff.