Re-work `VersionCheck` not to use Reactive Cache

I think we are encountering some issues with VersionCheck using ReactiveCache

There are many ReactiveCache nuances that we trip into:

  1. Cache invalidation !106254 (merged)
  2. No exponential backoff
  3. Special nil handling
  4. Exception handling needs care
  5. Schedules on user visit which means the user has to wait for ReactiveCache to complete in the background before getting any result

Proposal

  1. Change VersionCheck to check periodically using a Cronjob
  2. The result can then be either stored in a database table, or Redis cache
  3. If there's an error, we can adjust the backoff as required.

/cc @tigerwnz @zcuddy @sabrams

Edited by Thong Kuah