Refactor nodes

This moves some finders for elements (eg. `node.elements.find { |e| e.is_a?(Smartdown::Model::NextNodeRules) } `) down into the Node model as a step towards having this done at the parsing level.

Includes https://github.com/alphagov/smartdown/pull/50, please merge after

those five ```==```, ```<```, ```>```, ```>=```, ```<=``` could be written more succintly by using ```Comparable```. This isn't incorrect but I feel it could be less verbose :-)