Clean up MoeClass

* Ditch overloaded constructors for the implicit one with Option and
  defaults, then use named params
* Scaladoc
* Refactor attribute & method methods to be more idiomatic