Add concept of singleton element

Without this commit, every single element that expressed some form of entity but
did not have a form of uniqueness needed to be included in some type
that could assure uniqueness. The only way that was possible was by
basing them out of the root element. This method worked, but is not
quite as flexible as the ability to create types to represent singleton
entities deeper in the tree. While in any given configuration, this
means they can only appear once, it allows an XML tree to be broken up
in a bit more coherent manner when faced with optional singleton
entities. For example, The Oracle Coherence configuration has quite a
cases where this would help prevent having a resource type with 30+
properties.

This commit adds 'singleton_element' and 'singleton_element?' methods as
well ass replaces most usage of 'root_element'. It modifies
'root_element' to be an automatically assumed 'singleton_element'. For
now, this means 'root_element' does not do anything substantial anymore.
However, it is being preserved to control access to the Xmldecl and
Doctype attributes of an XML document.