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.
sync/reset_token: only allow config and GH to be passed to initializer

The default GH object is constructed using the config, so changing the
config will likely cause bugs.
sync/reset_token: feature flag this part of the sync
Merge pull request #372 from travis-ci/hh-reset-tokens-on-sync

Reset the GitHub OAuth token on auto sync