Ensure `:os` doesn't appear in build.config when multi_os feature is unavailable
Remove stale build.config deserializer/reader

The log warning "Attribute config isn't YAML" doesn't turn up in
the papertrail logs (searched back 5 days).
extract config normalization from Build to Build::Config
refactor Build::Config::Env normalizer
extract config obfuscation
refactor Build::Matrix::Config, move SecureConfig to Travis since it is shared by models
move EXPANSION_* consts to Matrix::Config
move the feature flag to Build::Matrix, and pass it as an option, so we can remove the dependency on the build
refactor Matrix::Config for better readability (hopefully)
Move checking for build_pushes? and build_pull_requests? to Approval

Rejecting a pull request or a push in receive service results in not
creating a request object. This is not good when pushes or pull requests
are disabled in settings, because we have no way to tell what really
happend. For example: someone disables pushes in repo settings, another
person pushes, request nor build is not created. We can assume that it's
because of the settings, but currently we would need to check logs in
order to be sure.

This commit moves this check to Approval, which will also make it easier
to communicate a reason to the user.
stop testing private build.matrix_config
fix failing spec, don't test matrix_config
move rejection of unknown/unwanted keys to Build::Config#normalize
add missing build/config/language.rb
move Matrix::Config to Config::Matrix
Defer fetching repository.key when using obfuscated_config
normalize: set missing language to default language
move all env key constants to Build::Config, encapsulate allow_failure_configs and fast_failure in Build::Config::Matrix, rename matrix_for to filter_matrix, simplify Job#matrix_config? and rename to Job#matches_config?
Merge pull request #317 from travis-ci/move-settings-checks-to-approval

Move checking for build_pushes? and build_pull_requests? to Approval
Account for new Job states in Matrix#matrix_state

New Job states (:created, :queued, :started) remain to be accounted
for in matrix_state.

This led to a few exceptions being thrown.