August 16 2014: State Machine cloning
	css_muncher:
	Updated to test the clone feature.

	statemachine:
	Added equality test to some of the node types.
	A BaseNode must have equal output edges in order to be equal.
	An ElementNode must have equal output edges and must have equal
	elements.

	If an error is thrown, it is assumes that it is because one of
	the nodes does not have a required function, which would be the
	case if they were not equal, so it returns False.

	Element Nodes were given the ability to be hashed. Base nodes
	may be given the ability to be hashed based on the elements in
	the list.

	Head nodes simply return 1 for a hash.

	Tails have been added to the state machines. This will allow for
	concatenation of two statemachines by the removal of head node
	on one state machine, and the tail node of the other, which will
	result in a new, longer state machine.

	Alternate paths will only be built from the head node, the
	connect back to the tail, if it exists. If it doesn't, then they
	will simply terminate in a null.

	The clone method allows us to create a new copy of the original
	state machine. These are separate objects. Changes to a clone
	will not affect the original, and vice versa.

I'm still not quite satisfied with the state machine. I think it would
be better to simply build a list of nodes that point to a tail than to
keep track of the tail. This would allow us to very easily remove or
change the pointers on concatenation. Then on the alternate path
operation would have a depth-first traversal to check that all the nodes
are taken care of.
The clone is way too expensive for my liking, and too much seems to be
centered around maintaining a single tail node, when it isn't necessary.