Raise an error when updating the GitHub status fails.

If there's a temporary problem with the GitHub API, we should retry.
Expand build matrix only on relevant factors

Build matrices should be constructed in such a way that
only relevant ones are built; for example, if the language
is 'python', it does not make sense to expand on 'rvm' or 'gemfile'.

These choices are hardcoded in `Build::EXPANSION_KEYS_LANGUAGE`.
We always expand on the keys `Build::EXPANSION_KEYS_UNIVERSAL`.

Also, eradicate use of `Build.expand_matrix_config`.
Expand on :rvm and :gemfile for Objective-C projects
Fix Objective-C related key to exapnd on
Tweak `Build.matrix?` and `Build.matrix_keys_for`

`Build.matrix?` should return `true` if and only if there is a key on which
we should expand, given the specified language.
For example, `Build.matrix? {'perl' => ['5.12', '5.10']}` should not be `true`
without `{'language' => 'perl'}`.

Consequently, modify `Build.matrix_keys_for` specs.
Move the mysterious `:branch` to where it belongs

We need to expand on `:branch` in all cases; but having a
` + [:branch]` seems out of place. Move it to
`EXPANSION_KEYS_UNIVERSAL` for better organization.
Add spec for testing matrix expansion for non-default lang
Remove `Build.matrix?`, which is no longer used
Add :ghc to ENV_KEYS
Remove unused spec data
Merge pull request #303 from dmalikov/master

Add :ghc to ENV_KEYS
whitelist postgresql addon
Remove unwanted expansion key

For a given language, remove unwanted key from config that
we discarded because of the language choice.
Test for whitelisting includes all whitelisted addons.
Merge pull request #301 from travis-ci/ha-bug-selective_filter

Expand build matrix only on relevant factors
Add `:multi_os` feature for expanding on `:os` key

The feature will be defined on the repository level.
The actual queuing of the job needs to still happen.
Add preliminary multi-os support

Job's `:os` parameter is now configured and used for queue selection.
Queue selection logic needs to be fixed; it currently relies heavily
on the order in which the queues appear in `Travis.config`.
Expand on `:ghc` for Haskell projects
Merge pull request #304 from travis-ci/ha-feature-ghc_expansion_support

Expand on `:ghc` for Haskell projects
Do not remove :os if multi-os feature is enabled

This should let travis-web display the 'os' value in the matrix