Minor fixes to how dependencies are resolved.

Instead of always preferring the stricter definition on all instances,
this commit adds a more complicated way of choosing.

Please see _choose_best_requirement for a detailed explanation of 
how this is being done.  

`git checkout HEAD~1 -- enstaller/resolve.py && nosetests -sv tests/test_resolve.py` 
will let you see the failing tests before this change.