Allow NodeVisitors to remove the node they're visiting

Useful for example when pruning elements - rather than building up a list of elements to remove then removing them you can remove them during traversal.