Added documentation

To generate docs in IntelliJ

Tools > Generate JavaDoc

Then find the /documentation folder and overwrite everything.

This documentation is public methods only, so basically what users would
see as I think that's the best way to understand what's going on.
Small refactoring

Made some public classes internal as the should have been, and
regenerated the documentation.