Implement async upgrade checker

* Reads from github looking for updated tags
* Runs in a goroutine to not slow down normal operation
* Uses the timelock cache to only check github at intervals
Add documentation for upgrade checks
upgrade: Fixes and cleanups from pull request