Add a method to add data to TagNode after it's constructed.
Set parent node for branching and inheritance tags
Set child nodes as well.
Improve assign tag. Now the left hand side may be an array expression.
E.g. { array[:key] = 42 }
Fix indentation generation.
Add some accessors
Add NodeTreeOptimizer that traverses the Node tree and calls NodeOptimizers on them.