Rework RemoveLog service

* Add Instrumentation and specs
* When expectations are not met, return a Hash with some information
for consumers to use
[WIP] Add removed_at and removed_by to Log
Do not check log content in instrumentation spec

It seems rather awkward to work out a stub that matches
the log with removed, so that the spec passes.
The log contents are tested in other places in this spec file.
Raise errors if log cannot be removed

Avoid using a Hash to pass error conditions while removing logs.
Use descriptive variable name for log removal timestamp
sync: reset the GitHub OAuth token on sync

This causes the GitHub OAuth token to only be valid for about 24 hours,
and should there be a leak at one point, the token will only be valid
for a limited amount of time.

This could break other code that accesses the API at the same time as
the sync is being run, since the old OAuth token is immediately revoked.
refactor(sync): extract token resetting to its own object
sync: only reset tokens on Sundays

When the token is reset, the old token is immediately revoked. This
means that any part of our code that uses a GitHub OAuth token can get
it from the database and then before actually using it, it could be
revoked. Until our code handles this better, we should limit how often
we cycle tokens, and Sunday was picked as a day with less activity so
less chance for collisions.
Undo database migration

This was addressed in travis-logs instead.
Merge branch 'master' into ha-feature-remove_log_enhancements
Add env_vars collection to settings
Send env vars from settings to workers
Fix specs
Merge pull request #376 from travis-ci/ps-env-vars-in-settings

Add env_vars collection to settings
Fix specs
Add a public field to env vars
Add a bit of logging to states cache writing process
Reset settings on repository reload
Merge pull request #377 from travis-ci/ps-plain-text-env-vars

Add a public field to env vars
[skip ci] Mention lint in case of YAML error