(PUP-2317) Make future parser issue discontinuation error for import

This makes the use of import statements raise an error.
The implementation reinstates "import" as a statement function. (This
is done by the factory when it finds a name followed by an expression
list). 
Then, to raise the error, a function written with the function API
called 'import' raises an error.

This also introduced a way to raise errors based on the issue/acceptor
system. This new error type is called Puppet::Pops::SemanticError.

It is used to issue the discontinuation error. The error itself
refers to the deprecation URL which points to the relevant documentation
for manifest directory and import.
Merge pull request #2559 from zaphod42/issue/master/pup-2306-generate-returns-strings

(PUP-2306) Force return type of generate to String
(PUP-2240) Add unfold of array using splat unary * operator

This adds the ability to unfold values into individual parameters
and entries in lists the same way as this is done in Ruby.
(PUP-2240) Fix failing test (hash order ruby 1.8.7)
(maint) Remove calls to removed function

On master, the extra check if a function was available before evaluating
arguments was removed. The rebased code still had this call.
Merge commit 'refs/pull/2543/head' of git://github.com/puppetlabs/puppet into merge/yumrepo-priority-absent
Merge commit 'refs/pull/2544/head' of git://github.com/puppetlabs/puppet into merge/yumrepo-priority-absent
Merge branch 'merge/yumrepo-priority-absent'

This closes GH-2543, GH-2544, and GH-2545.
(maint) Adding File.expand_path to the Tar::Gnu specs.

Prior to this commit, the specs made assertions about absolute file
paths, which works perfectly until you try running the tests under
Windows. This change patches the tests so that they will continue to
run properly under both Windows and Linux.
(maint) Remove an outdated PMT acceptance test.

Prior to this commit, we had an acceptance test in place to prevent the
PMT from accidentally breaking backwards compatibility with the Gem
version of the same tool.  Since that version is now long outdated, and
since the core-Puppet version of the tool has long since solidified its
own namespace in such a way that it does not conflict, continuing to
assert that we do not conflict is of limited value.
Merge pull request #2579 from pvande/maint/master/removing_outdated_PMT_acceptance_test

(maint) Remove an outdated PMT acceptance test.
Merge pull request #2578 from pvande/maint/master/gnu_tar_spec_fails_on_windows

(maint) Adding File.expand_path to the Tar::Gnu specs.
(Maint) Don't expand tar cf - sourcedir path

The Gnu tar implementation executes `tar cf - #{sourcedir}`, which can be a
relative path. So it is not necessary to expand it, and doing so causes the
test to fail on windows.
(PUP-2073) fix for multiple diff_args

Previously, if you specified multiple arguments in the `diff_args`
setting, they would be considered a single argument and quoted to the
diff command. Puppet would then try to execute:

    diff '-u --strip-trailing-cr' pathA pathB

But would silently fail without showing any diffs.

This commit ensures we can handle multiple diff args.
Merge branch 'pr/2477'

* pr/2477:
  (PUP-2073) fix for multiple diff_args

Closes GH-2477
(maint) Update PMT to work around cross-platform issues in Dir.[]

The (unspecified) default behavior of the Dir.[] method, which will implicitly coerce non-String arguments into Strings.  The win32-dir gem
overrides this method and calls String specific methods on the arguments
before any conversions are done.  This change makes our use of the
method in question more explicit, passing Strings instead of Pathname
objects to avoid the interpreter's ire.
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.
(maint) Remove FS redefined constant warnings in spec runs

We define FS as an alias for Puppet::FileSystem in three separate
specs. Unfortunately, describe blocks do not provide any namespacing in
rspec, and this were colliding, issuing two separate warnings for a
redefined constant.  Wrapping each spec in its own module provides
separation and elliminates the warnings.
Merge branch 'pr/2584'

* pr/2584:
  (maint) Adding the Usertrust Network CA certificate.

Closes GH-2584
(maint) Adding the Usertrust Network CA certificate.

Recent changes have updated the acceptance testing Forge host, which
uses an unknown (to Windows) CA.  This change adds the missing
certificate so that the acceptance tests will pass under Windows.