Decorate parse tree with helper node objects

Dealing with the various special cases in HAML is a bit daunting, and
can make writing new lints challenging for those who aren't intimately
familiar with the tree hierarchy and composition.

In an effort to make writing these lints easier, replace all
`Haml::Parser::ParseNode` objects with our own `HamlLint::Tree::Node`
objects.

These `Node` objects define a number of helpers which will hopefully
make the interface for working with the parse tree cleaner and more
understandable. It also makes it easier to write helper methods that are
particular to certain kinds of nodes.

Part of this change involved rewriting most of the linters to support
the new `Node` interface.

Change-Id: I35a41a8e9b3cb9af577367f343bc9bd8f7fe0d31
Reviewed-on: http://gerrit.causes.com/42562
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane.dasilva@brigade.com>
Add ObjectReferenceAttributes linter

Add linter which checks for the uses of the object reference syntax.

Change-Id: I8b31f7b9b00aed17af544fb4cbb66c4c5bc23c3e
Reviewed-on: http://gerrit.causes.com/42563
Tested-by: jenkins <jenkins@causes.com>
Reviewed-by: Shane da Silva <shane.dasilva@brigade.com>