(maint) Allow for multidimensional hashes in yaml configs

This allows us to use multidimensional hashes in the yaml configs.

This will allow us to have conditional configuration based on the
build type (pe or FOSS), like mock and cow information. Currently
we have a flat data structure, config variables are set unconditionally,
if they exist, based on the load order of the configuration files - last
to load wins.

This pr sets a flag based on the build type and allows us to specify
different configuration sets based on that distinction, "pe" vs "pl".
what about if we've managed to misspell `pe` or `pl`? Like, if it's a hash, but it doesn't match `build_type`? It should probably fail in some way, rather than just not doing anything with that hash.