Make study listings async

This is a first attempt start at making things async. As an example, this makes the creation of the study listings async so the loading is non-blocking or other pages.
I believe the async methods can still block the server btw.

One option is that if this is slow, that we register a periodic handler with the ioloop to that caches these data in redis on a hourly or daily basis. However, we don't at this time have a great way to profile. It may be interesting to explore [plop](https://tech.dropbox.com/2012/07/plop-low-overhead-profiling-for-python/) for this.