Add parallelization to software fetching

A much simpler thread pool implementation

I defaulted the max_concurrency to the total number of softwares that need to be fetched. (overridable in the project config as the `max_concurrency` key just in case you need to reduce it for a project for some reason)

![hakgphe](https://cloud.githubusercontent.com/assets/428/3988077/62d268ac-28ac-11e4-91ed-17cee1984f73.gif)

Is this not required by stdlib?