Allow replacement of nodes on a tree

This commit adds and tests two new Tree::TreeNode methods to allow
in-place swapping out of nodes.

- `parent#replace!(old_child, new_child)`
- `node#replace_with(new_node)`
Allow replacing a node with a similar named node
Remove use of refute that breaks 1.8 rubies
Merge pull request #28 from packetmonkey/master

Allow replacement of nodes on a tree