Permissions should be removed when the repository is deleted
feat(build-config): set a default os value in the config

Close travis-ci/travis-ci#2205.
Fix specs broken by adding a default os value
use ruby 2.1 not 2.1.0
Merge pull request #375 from travis-ci/hh-set-job-os-default

feat(build-config): set a default os value in the config
Merge pull request #374 from simonbnrd/fix-remove_permissions_on_repo_destroy

Permissions should be removed when the repository is deleted
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.
Prevent empty users list from causing nil errors.

Injecting :merge to an empty list returns nil, causing the event
handler to raise an error.
Remove some commented-out code
spec(github-status): add spec testing the no-tokens case

This tests the bug that 5767fd6dfe720830c1ae73ca5f4bf8b45d650c99 fixed.
github-status: have #tokens return a Hash in all cases

The #tokens method returns a Hash of username-token key-value pairs, and
while returning an empty array doesn't really break anything since that
means the task won't be handled, I think it's good to always return the
same type for consistency.
build-config: add `ruby` as a matrix key for Ruby projects
Send build:created outside of build:created.

It caused messages to be sent for builds that were subsequently
not created, e.g. in case of an illegal YAML file. These builds
were then not created because the previous implementation didn't
return the build object. The notification part is now part of a
separate method instead, which is only used for creating a valid
build.

Fixes travis-ci/travis-ci#2249.