Clean up MoeObject further and add documentation.

* Use the implicit constructor with a default to reduce complexity
* Add scaladoc to methods and class
* Rename some variables to be more descriptive
* Use named parameters in methods, since this is one of those libraries
  that needs to be read by others and it will change often. Future
  proofing!