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
Rename _filter to _action
Refactor Commenter and CommentingPolicy classes

* move related responsibility into `CommentingPolicy` to improve readability flow
* use `position` instead of `original_position` when comparing commented code
  line positioning
* check if message was previously commented on for the changed line