Migrate explicit `abort` calls to exceptions and errorhandlers so they can be caught more easily.
Unify HTTP GET error handling
Use a short and a long versions TTL. Make the long TTL control Redis expiry and set to one hour.
Handle connectivity errors for remote index more robustly:
 - Keep the cached value in Redis longer
 - Re-query the remote index at the same interval
 - If re-query fails, fall back to cached value
Fix for pypy compatibility: must super's __init__
Merge pull request #19 from jessemyers/feature/offlineindex

Feature/offlineindex