(PUP-1640) Add technology agnostic way of plugging in data modules/env

This adds extension points for plugging in and specifying use of
an implementatio of a data provider for environment and for modules.
The implementation allows one provider per environment, and one per
module.

This only adds the mechanism - it is configured, but not yet used.
(PUP-1640) Add seting to opt in to an environment based data provider

This adds the setting :environment_data_provider which is the name of a
registered provider (values are 'none' or 'function' by default).
(PUP-1640) Add Data Providers for environment and modules

Includes tests that:

* assert that data from a module has lower precedence that data from
  an environment
* the function data mechanism works for both env and module
* the function data mechanism calls the expected functions
* the configuration of extensions allowing the specification of
  data mechanism works for env and module.
* the data functions must return hash
(PUP-1640) Remove unused puppet model checker for catalog side effects

This removes the checker that is intended to check a puppet language
model for catalog side effects since it is not yet used. It can be added
again when functions written in the puppet language is added.
(PUP-1640) Fix formatting, typos, etc. found in review

* This removes the data.pp mentioned as the manifest in the
environment.conf file (unused and wrong)
* Typos in comments
* missing end of line on the last line in some source files.
Merge pull request #3341 from hlindberg/PUP-1640_data-in-modules-spi

(PUP-1640) Add agnostic mechanism for data in modules/environment