(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 method isn't doing what it's doc claims, and I'm not positive that's doing what you expect either.  What happens when both tests are false?  I think what is returned is the value of the expression in the last if clause, which will be false, which will work, but it's not terribly clear.  I would refactor this so that you have a clear if a || b return true; end; return false...and then adjust the doc to match it...and probably add pos/neg specs for it in node/environment since it's public.