Complete makeover of plugin

I've applied a more object-oriented approach and re-factored the entire
plugin into the module design patter. It's now much easier to add
functionality, debug code, and will run a lot smother while only adding
0.78kb. I've also added in some safe guards to properly initiate the
plugin.