Fixing best_version()
Fix broken version matching when finding packages

The `AggregatingLocator._get_project()` method present in distlib 0.1.2
just return the first version collected from the first version found in
the first locator, which is not enough;

We need to iterate over all the versions found and filter out all the
versions that don't match the original requirement;

I made some tests with the new `AggregatingLocator._get_project()`
pushed to distlib's master branch but I had no success, there's a
confusing relation between this method and `Locator.locate()`, specially
caused by the side effect that creates a matcher attribute only if it's
called from `locate()`;

Since the new distlib also breaks a lot of other stuff, I just extended
the `locate()` method in my own version of the `AggregatingLocator` and
it seems to work.