Refactor the plugin

* Moves class into it's own file per good coding practices.
* Separates out the variable strings from the class.
* Extends the GP_Plugin class, and uses the methods it provides for hooking into actions and filters hooks.
* Avoids hooking in within the constructor, to better support unit testing.