Refactor: Split xml_private_t into *_doc_private_t and *_node_private_t
This is reduce memory overhead when only one set of data is needed.
Right now that overhead is fairly minimal, but it could be significant
in the future if there is a large number of nodes.
Most of this is adapted from jnpkrn's PR #1940.
closes T63