(PUP-2757) Check for env change before updating Configurer context

Previous work on PUP-2757 ensured that resource references would use the
current environment and that agent runs would use a correctly
initialized 'remote' reference environment, but, ironically, Charlie
Sharpsteen found that the fixes for agent runs re-introduced the
duplication of initial environment import in the Puppet apply case.
Removing that duplication of effort was the reason for the initial
change.

This commit tests whether the environment has changed, which it should
only do in the agent case, and, if not, pushes the original env onto the
context stack.  We push regardless, so that we don't have to guard the
corresponding pop.
(PUP-2882) Verify available versions

Prior to this commit we didn't check up front to make sure there is a version
matching what is requested by the --version flag. This changed the error given,
which made acceptance tests fail.

This commit adds a check before even attempting to build a graph to ensure that
there is a compatible version.
Merge pull request #2905 from jpartlow/issue/master/pup-2757-check-if-env-is-same

(PUP-2757) Check for env change before updating Configurer context
Merge branch 'master' into puppet-4
(PUP-2948) enable rubocop for travisCI

Before this commit, rubocop was executed for each ruby platform in travisCI.
This commit enables rubocop only for the latest ruby platform (2.1.1). In a
nutshell, the changes included are

- Add rubocop step in travis CI
- Ensure rubocop is present in test group
- Ensure rubocop is not added for ruby 1.8
Merge pull request #2889 from vrthra/rubocop/puppet-4/enable-travisci

(PUP-2948) enable rubocop for travisCI
Merge pull request #2913 from highb/fix/master/pup-2882_check_available_versions

(PUP-2882) Verify available versions
Merge remote-tracking branch 'upstream/master' into puppet-4

* upstream/master:
  (PUP-2882) Verify available versions