(PUP-2350) Disallow non-string file modes

In Puppet 4.0 integers will be parsed more strictly, which means that
file modes like `644` will be octal 1204. The alternative to this is to
force file modes to be strings where they cannot be interpreted
incorrectly. PUP-2349 deprecated non-string modes; this commit removes
support for them entirely.
(PUP-3277) Add dir env to file/source_attribute test

This commit modifies the file/source_attribute test to use
directory environments.
(PUP-3277) Make whitespace consistent in file/source_attribute test

Only indent in blocks; step() calls without blocks.
Merge branch 'pup-3277-file-source-attribute'

* pup-3277-file-source-attribute:
  (PUP-3277) Make whitespace consistent in file/source_attribute test
  (PUP-3277) Add dir env to file/source_attribute test
Merge pull request #3148 from adrienthebo/removal/master/pup-2350-remove-non-string-file-modes

(PUP-2350) Disallow non-string file modes
(PUP-3306) Remove deprecated Puppet::SSL::Inventory#serial method

This commit removes the deprecated `serial` method from the
Puppet::SSL::Inventory class. It is replaced by
Puppet::SSL::Inventory#serials.

This commit is part of the Puppet 4 code removal effort.
Merge pull request #3153 from whopper/pup-3306/remove_serial_method

(PUP-3306) Remove deprecated Puppet::SSL::Inventory#serial method
(PUP-3239) Refactor node environment validation

Prior to this, the compiler was responsible for testing the environment
and producing an error message.  This change pulls the validation step
into node environment, breaking the error message up so that any
component can check if an environment has setting conflicts and return a
uniform error message.  This will make it easier to add other
environment checks.

We refrained from including a more general error message handling
mechanism similar to what is currently in POPS because generalizing that
is a bigger task more suited to a broader internationalization epic.
Merge pull request #3117 from demophoon/feature/master/pup-3239-environment-validation

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