Cron-based module fetching / database-backend server

From day 1 it's been a pain to update components - the polling would silently fail for no good reason and a lack of logging made it hard to discover.

This PR finally addresses the whole problem by offloading the fetching to two cron-jobs: one for fetching modules from NPM, one for fetching github stars. Instead of setting the data in-memory, it will persist to Redis.

Obviously, this introduces a dependency on Redis, but since this is something hosted by VaffelNinja, I think that's reasonable.

Closes #1 and #22.