Refactor:

1. Pull StateMachineTreeWithState out from XmlToAvroPathCreator to a
top-level class and rename it to XmlSchemaDocumentNode.

2. Rename DocumentPathNode to XmlSchemaDocumentPathNode.

3. XmlSchemaDocumentPathNode will contain an XmlSchemaDocumentNode,
which will contain a SchemaStateMachineNode.

Future Refactors:
1. XmlSchemaDocumentPathNodes will be given a direction: SIBLING (for
sequences), PARENT, or CHILD.
2. SchemaStateMachineNode will be renamed to XmlSchemaStateMachineNode
3. All Avro types in XmlSchemaTypeInfo and XmlSchemaStateMachineNode
will be genericized, allowing it to be replaced by other types to be
transformed to.
Refactor: add a direction to the XmlSchemaDocumentPathNode.
Renaming the accessor of the root XmlSchemaDocumentNode and creating a
new accessor for the XmlSchemaDocumentPathNode.
Implementation of PathSegment's compareTo.
Flushed out the DecisionPoint implementation.
Attempt at logic for handling successful and unsuccessful traversals
through the XML Schema.

Still need to add functionality for handling when to follow a path, and
when not to.
Adding information to the traversed elements about whether it was the
start or the end.  This information will be needed later when replaying
past traversals to determine where in the tree we are (before reading
the next element.)
Implementation of XmlToAvroPathCreator.followPath()
Adding proper getters & setters to XmlSchemaDocumentNode and updating
client code accordingly.
Completed unfollowing a path.

This includes keeping track of the index in a sequence that the document
node was at when we created the path.