Plugin API Cleaned Up

I went through and cleaned up, and resorted the plugin API. 

I added protected helper functions that all inherited classes can/should use for console output, include different warning/error and debug levels.

Presently any (virtual) event that gets registered and called, but not overridden will now console out an exception message letting the user know that they did not properly override that function and is wasting the event calls.