Added threaded download using futures module

I am using Python 2.7 for this which requires installation of the futures module. Once that is installed it's straightforward to add threading. It's not 100% optimal since we will download in chunks of NUM_THREADS but better than before. It's a bit tricky to do it the smarter way since we don't know how many pages we will end up with.
Pedantic request: could you add a space around the equal sign:

    with futures.ThreadPoolExecutor(max_workers = NUM_THREADS) as executor:

<sup>Sorry.</sup>