(PUP-3239) Stop compilation if $environment has bad manifest settings

Before this commit we raised a warning if '$environment' was found
in the 'environmentpath' or 'basemodulepath' settings but continued
catalog compilation.

This commit adds in a validation method which raises an error before
compilation if an unsafe interpolation of '$environment' was found in
the 'environmentpath' or 'basemodulepath' settings thus stopping the
compilation process all together. This commit also consolidates the
'conflicting_manifest_settings?' method into the 'validate' method since
it also needs to halt compilation.

When new pre-compilation validations are added they can be added to the
new 'validate' method.
After reading through this test, I'm unclear what value it is adding. If the stubbing is removed from the compiler_spec, then all of these cases are covered. The only part missing is that it can read the invalid value from the config file, but I don't think that is really in question.