handle text node and child node attribute changes, remove need for normalizing, add hook for text node diffing + basic (random) tests

Fixes text nodes, as in #54, and attributes of child nodes, as in #53. It removes the need for normalizing text nodes, #52. And it adds a way to add custom text node diffing, #49 .

I have added a basic test that creates random nodes and tries diffing them.