Introduce attr_extras

* Reduces boilerplate for simple Ruby objects
* Encourages good initializer practices (just initialize)
* Makes it easy to make immutable value objects

http://rubydoc.info/gems/attr_extras