Aligned AST interfaces with Ruby definitions

Wile trying to move the reveal.js slim backend to a Groovy MarkupTemplateEngine based approach I needed to make these changes.
The members that are moved from AbstractBlock to AbstractNode are are also defined on AbstractNode in the Ruby implementation.

Some methods like DocumentRuby.doctitle() or AbstractNode.getAttr() were overloaded to mirror the defaults defined in the Ruby implementation.