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