Namespace and Cleanup

- Add proper namespacing to the project
- Clean up and simplify the plugin system
- Add a lot of documentation

Closes #21