adding a public getter for the plugin slug so that external classes can reference it

ht @garyjoes https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/commit/b5549d5f9cc427c6406d52954c139419a5426495#commitcomment-6236733
de-subclassing the file, adding a version attribute, setting it in the constructor
fixing a small type, documentation the imports, changing the way in which the plugin is instantiated
adding getters for the protected properties
de-subclassing this class and defining a domain attribute provided by setter injection