Adds a DefaultOrderedDict class

This new class is meant to be a substitute for defaultdict().   I wanted to use it in pants because I'm trying to get to the bottom of what seems to be non-deterministic behavior in ordering the classpath for jvm compiles between different machines both working from head of master in the same repo.

I also added some tests for OrderedDict while I was at it.