Adds the whitespace character to the grammar constants.
Add abstract base classes for a visitor and its visitable elements.
Implement the visitor pattern on XML nodes

- Extracts the XML writing to a visitor class for extra cleanness of the nodes.
- Add an identity transformer that by default creates a copy of an XML tree, but
  can be overridden to perform transformations.