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)
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 #315 from travis-ci/sf-refactor-build-config

Refactor build config