Improved threaded page getting

(based on state of pull, as of 4/7/13)

the improvements:

* thread count is always set to 10,  instead of based on the number of locations, which is normally only 1.  i.e. before there was rarely any concurrent page getting actually happening.
* previously,  it was possible for all, but the last thread to exit, and then the last thread could encounter a bunch of links, and be stuck with all the work.  that can't happen now.  threads never exit.  the main thread now blocks on joining the completed queue, not thread joining/exiting.
* new logic to not repeat getting the same pages
* new logic to raise uncaught thread exceptions into the main thread (vs dying)
* the thread logic is now isolated in it's own class for easier testing.

based on some really rough comparisons - this can yield speedups of 30-50 %.  to see the difference `pip install coverage` before and after the change.

although the changes in this pull are worthy, it should be understood, that most of the performance gains in this pull could be achieved with a one line change to our existing code.  I.e., change the following line so the thread count is pinned to 10 (or just change "min" to "max")
https://github.com/pypa/pip/blob/develop/pip/index.py#L279