Iterative pre/post/in order traversals using a parent pointer.

Note: No optimization has been done on these to identify redundant clauses. I've favored clarity over conciseness.
Refactor the testing so we can have more trees run through more algorithms
Added more testing and fixed a bug in the in order parent pointer traversal.
Add a more optimized version of the in-order parent pointer traversal