Raise an error when updating the GitHub status fails.

If there's a temporary problem with the GitHub API, we should retry.
Correctly mark allowed failures for non-Ruby projects

We use Job#matrix_config? to test if an allow_failures entry matches a
job, which gets the keys to compare from Build.matrix_keys_for. Since
the allow_failures entry doesn't include a language key,
Build.matrix_lang_keys only returns the keys included that are "Ruby"
keys, since Ruby is the default language. This in turn makes the config
that matrix_config? tests against empty, causing no jobs to be marked as
allowed failures.
Merge pull request #307 from travis-ci/hh-fix-allow-failures-with-custom-language

Correctly mark allowed failures for non-Ruby projects
Merge pull request #298 from travis-ci/mm-github-status-raise-error

Raise an error when updating the GitHub status fails.
Deal with the case where `language` is an array

Users shouldn't do this, since we only use one language in a build,
but some users have it, and it was a regression to not deal with this.
Merge pull request #309 from travis-ci/ha-bug-lang_array_in_config

Handle the case where `language` is an array
Expand 'jdk' for Scala projects
Merge pull request #311 from travis-ci/ha-bug-scala_matrix_expansion_on_jdk

Expand 'jdk' for Scala projects
Fix rejected pushes in receive service

Previously there was no way to reject pushes based on a payload. After
introducing build_pushes setting it's now possible and receive service
code was not updated for such a possibility
Allow to set repository_filter rules as strings

Currently rules for repository_filter are hardcoded in config.rb, but
there is no way to put them in config. This change allows to set rule in
config and avoid bumping travis-core when changing the rule.
Fixed Build states for fast finishing
Added spec for new state conditions