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
Remove unused spec data
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
Expand on `:ghc` for Haskell projects
Merge pull request #304 from travis-ci/ha-feature-ghc_expansion_support

Expand on `:ghc` for Haskell projects
Fixed Build states for fast finishing
Added spec for new state conditions