adding logic to better handle external APIs timing out on the homepage

I believe the timeouts earlier today were the result of the downloads count API timing out:

* I've added timeouts to external API calls (to CouchDB and downloads count API) when loading the homepage -- this will result in gaps in the data on the homepage.
* a fringe benefit of the gaps, is that next time we run into a similar problem we should be able to ascertain what API is having problems.

a couple notes:

* this seems like a common enough pattern that we should pull it into a common helper.