This change adds 3 new interfaces for plugins to the framework. This change also includes extensive cleanup as we consolidate internal plugin functions into the pluginManager. Also using the new interfaces we no longer need to pass additional parameters in quite a few methods.