Small improvements in normalization

Also extended the DSL a bit (node.text?), have Hexp::List and Hexp::TextNode implement
to_ary and to_str respectively, make TextNode quack like a Node, and started a Widget
example. Code coverage > 99%, yay!