Add tag to worker job payload.
Allow per-repository queueing setting.

This utilizes settings to allow configuring a maximum number of
builds to run for a specific repository.
Ensure repo maximum doesn't override account limit.
Extract a new method, clarify variable names.
Bring back together what once was.
And the award for weirdest Ruby goes to....
Add a config flag to enable/disable limit per repo.
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.
Merge branch 'master' into mm-add-tag-to-worker-payload

Conflicts:
	spec/travis/api/v2/http/request_spec.rb
	spec/travis/api/v2/http/requests_spec.rb
github-status: remove old code in spec
feat(github-status): use token from users with push access

To update the GitHub commit status, the permission needed on the GitHub
API end is just push access to the repository, so we don't need to look
for admins.

This commit changes it so that multiple tokens are sent (in order to
help with error handling):

 - The token for the committer
 - The token for the admin
 - The tokens for all users with push access (according to the last
   sync)

The reason for this order is that GitHub stores the user who set the
commit status. It would make most sense if the committer set it, but if
we can't find their token (or they don't have push access), then we can
use the admin instead (who possibly set up Travis CI). Failing that,
we'll just use any token as it's more important to have the token get
set if we can.
fix(repository): make users_with_permission work (and add tests)
user: add method to find a user given an email address
stubs: stub out users_with_permission on the repo stub
github-status: feature flag the new "multi token" feature
feature flags: add documentation describing default
github-status: flip default for 'multi token' feature flag

It's now enabled by default.
Add a configuration flag for the tag name.