Dom4 can return an individual attribute node
Update the grammar with namespace rules
Introduce QName, PrefixedName, and preferred_prefix

Overall, no new functionality is added, this is just threading types
through to allow tracking namespaces and prefixes.
Generate namespace prefixes for QNames without a preference
Track multiple levels of namespace prefixes
Support preferred prefixes for elements and attributes when writing the DOM
Multiple preferred prefixes can refer to the same namespace
Introduce new sink methods for starting and finishing the attributes

When dealing with namespaces, we will need to pass through all the
attributes (really the namespace declarations) before we can make
sense of the element or attribute names. This gives us hooks to know
when all the attributes are done and thus when the namespaces are
available.
Support parsing elements and attributes with a namespace
Parse elements and attributes with namespaces from parents