(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.
This is mostly right, but it would actually match interpolation of, for instance, `$environment_timeout`. Rather than parsing this here, it might be better to be able to ask the settings system for the "free variables" of a setting.

```
  Puppet.settings.interplations(:enrionmentpath).include?("environment")
```