Add doctype support

Without this commit there was no way to manage the creation of doctype
declarations in types that used xmlmapper to map root elements.

This commit adds the ability to manage doctype declarations. It is
somewhat a bruteforce way to manage it. The method is simply expecting
valid XML for how the doctype should look in the XML document. It
properly parses and validates the content, and finally applies it to the
document if not present or if the document is inconsistent with the
provided content.

Like I said, this feels like a bruteforce appraoch to this problem. I
simply do not have any good ideas on handeling this rolling around in my
head. Overall, I'll say (and be sure to document it this way) that this
part of the interface may change.