The traversal order used is preorder, not inorder; support postorder traversal

1. The term "inorder traversal" does not make sense outside of the context of binary trees.  Instead, use the term "preorder", which is actually what is done.

2. Also allow for postorder traversal (and test that it works).

Postorder stuff is needed for https://rbcommons.com/s/twitter/r/1179/

Testing Done:
./pants goal test tests/python/pants_test/graph:graph

Reviewed at https://rbcommons.com/s/twitter/r/1177/
Sync of https://github.com/pantsbuild/pants/commit/e987ac2fb34902530a93fcb2de7169d6b20b5075