Add the Hexp::Node#attr method

This allows one to derive new nodes with altered attributes, and is an
important part of getting to a workable API.

This commit also removes a few unused methods in TextNode, and greatly
improves test-coverage