Ensure Node.normalize() normalizes all descendants

Fixes #2170 by recursively calling `normalize()` on all children that aren't text nodes.

At the time of writing the master branched passed 2/3 of the `Node-normalize` wpt tests. This branch passes 3/3.

I wrestled for a while with the compiler over pointers and lost, resorting to `clone()`. I imagine there's a way of doing it that avoids that but I couldn't work it out.