(PUP-2302) Fix issue with Resource Defaults for qualified names

When defaults were set using future evaluator and the resource has
a qualified name, the registration of the default was not recognized
because scope requires every segment of a qualified name to be upper
cased.

This adds upper casing of every segment. An integration test checks
that the capitalization works.
(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.
(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.
Merge pull request #2585 from pvande/maint/master/work_around_platform_inconsistencies_in_Dir

(maint) Update PMT to work around cross-platform issues in Dir.[]
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (maint) Adding the Usertrust Network CA certificate.
Merge remote-tracking branch 'upstream/pr/2586'

* upstream/pr/2586:
  (maint) Remove FS redefined constant warnings in spec runs
(PUP-2344) Fix issue with inter-module calls (visibility error)

This fixes the problem where inter-module function calls could
not be made. The main problem was that a function when loaded
was given the public loader and thus had no visibility into its
containing module's dependencies.

The design is that module resolution should be on-demand, only
when something actually needs the proviate loader should it be resolved.
The resolution is triggered by asking for the private loader,  but no
such call was made on the call-path when a function was loaded.

This commit adds the notion of private_loader to the loaders (those that
do not have one respond with self). Those that do either provide the
private loader explicitly (environment loader), or on demand (by
obtaining the private loader from loaders).

This change required tests to be modified since the logic now depends
on :loaders being bound in the Puppet context
logic that made this happen on demand was not implemented
(maint) Remove scaffolding test

This should be tested elsewhere or simply depended on.
(maint) Clean up loader tests a little

Just a bit of combining multiple asserts into one
(PUP-2344) Extract methods to make flow clearer

There were multiple levels happening in the different methods and some
LoD violations. By extracting some methods onto the LoaderModuleData
class and pulling out methods for the different kinds of dependency
loader creations the flow becomes a little clearer.

This also removes the TODOs since I think that the current
implementation is the right way to go.
(PUP-2344) Inject environment into loaders

Having code depend on the "current environment" has lead to trouble in
many instances. Having the loaders be given an explicit environment is a
much safer way to proceed.
(maint) Remove unused "create_loaders"
(maint) Unnest tests for loaders

Having extra nesting in tests just makes them harder (for me) to read.
This unnests and changes around the asserts a little to be ever so
slightly clearer.