DocumentPathNodes, StateMachineTreeWithStates, and PathSegments, oh my!

Once we've successfully traversed a path all the way to an element, we
want to start building back that path.  However, if there are multiple
valid paths, we do not want them to share nodes, so we must clone them.

HOWEVER!  We do not want to clone the first path node, because it
branches to one of many different paths.  So we want to use that node to
choose which path to follow, not to reset it with its clones.
Adding support for wildcard elements.

At this time, it is not possible to determine the XmlSchemaAny's
original target namespace without knowing the original element that
owned it.  Likewise, unless the XmlSchemaAny's namespace is an actual
namespace, or ##any, or ##local, there is no way to validate it.

The work-around is to walk upwards through the tree and find the owning
element, then use its namespace as the target namespace.