Some more improvements and fixes for the dependency resolver. Back-tracking is now more intelligent in how it determines which upstream requirements to remove from the working graph. Added another mode to the pydot graph drawing where you can now draw requirements instead of distributions - this represents the underlying data directly and is more useful for debugging.  Continual refactoring and PEP8.