(PUP-2901) Add module dependency validation

Prior to this commit there wasn't much verification for module dependencies.
This commit adds verification the module dependencies have sane names and version
ranges. If verification fails, it will raise an argument exception.
(PUP-2745) Ignore malformed forge dependencies

Prior to this commit a malformed name in the dependencies for a downloaded forge
module dependency would cause the PMT to fail unexpectedly.
This commit causes the PMT to ignore malformed dependencies.
(PUP-2991) Restore ability to manage shells on solaris

Background: for PUP-1448 commit 73b0c2b0 added a new feature
for user providers `manage_shells`. The intent of that commit
was to add this feature to all existing user providers which
had that feature, and several were covered, but Solaris was
missed.

This commit simply adds the `manage_shells` feature to the
Solaris user provider, following up on the intent in PUP-1448.
Merge pull request #2926 from kylog/issue/pup-2991/solaris-manage-shells

(PUP-2991) Restore ability to manage shells on solaris
(PUP-2991) Add test case for user shell management

This commit adds a test case to validate the shell attribute of
the puppet user resource is being managed by the manifest.

This test validates that the set shell on creation is part of the
user profile. It also tests that the shell is updated when the
shell defined in the manifest changes.
Merge pull request #2928 from johnduarte/issue/pup-2991/user-shell-manage-test

(PUP-2991) Add test case for user shell management
Merge remote-tracking branch 'upstream/stable'

* upstream/stable:
  (PUP-2991) Restore ability to manage shells on solaris
(PUP-2912) Build/unpack spec tests w/o symlinks

Prior to this commit we would try to use symlinks in the tests on platforms that
do not support symlinking.
This commit uses the Puppet feature checker to conditionally try the tests if
Puppet thinks the platform supports symlinks (Unixes, Linuxes, Win 2k8+).
Merge pull request #2927 from highb/fix/master/pup-2912-windows-spec-tests

(PUP-2912) Build/unpack spec tests w/o symlinks
(PUP-2912) Puppet FS symlinks in build/unpack

Prior to this commit build/unpack were trying to use the Ruby stdlib symlink to
deal with symlinks. This fails on platforms (Windows) that Puppet says supports
symlinks because it does not duck punch Ruby stdlib.

This commit switches the specs and code for build/unpack to use Puppet FS lib's
symlink functions. This should allow it to function correctly on Windows hosts that Puppet
supports symlinks.
Merge pull request #2930 from highb/fix/master/pup-2912-windows-spec-tests

(PUP-2912) Puppet FS symlinks in build/unpack
(maint) Fix fact output error in environment acceptance tests

Prior to this commit we were experiencing a failure in the
environment acceptance testing due to a recent change that reduced
fact loading output to debug only.

Now the test is no longer failing since we are now explicitly
loading the global module instead of using the fact loading output.

Paired with Hailee Kenney <hailee@puppetlabs.com>
Merge pull request #2932 from jpartlow/maint/master/fix_fact_output_failure_in_environment_acceptance

(maint) Fix fact output error in environment acceptance tests
(maint) Add entry to makefile to generat a debug version of the parser.

The parser generated by using make egrammar.debug should NOT be checked
in, as it is slower and produces lots of output at the end.
(maint) Add to_s methods to Token and Factory to get sane parser debug

This adds methods to Factory and Lexer2::Token that produce output
suitable for output from a parser in debug mode.

The reason for this change is that default inspect output was produced
and this created very poor signal to noise ratio in the debug output.
(PUP-2898) Drop support for AST Transform of Resources

The implementation no longer needs to transform resource expressions
to 3x AST. This changes the transformer to raise an error if attempted.

The spec test for resource transformation is also dropped. No new
test added that transformer raises exceptions for resource
transformation since all transformation eventually will be dropped.
(maint) Add a --dump action to the parser face

This adds the --dump action to the parser face which performs a
tree dump of the produced AST model using the future parser.

The command accepts an additional --[no]-validate option to turn off
validation (the default validates). Without validation only syntax
errors terminate the dump.

The -e option (chosen to mimic -e to apply) accepts the source on the
command line. Alternatively the source can be fed to stdin, or given as
a series of files (without -e option)
This command is useful because it is otherwise required to instrument
the code to get a dump of the result when working on parser related
bugs.
(maint) Remove stale comments about hyphens in name patterns.
(maint) Output extra info for debugging parser and cleanup

This adds output of the token number when an error occurs (it otherwise
only outputs the text representation, and there are several tokens where
the text is the same). This only matters when debugging a grammar and
this behavior is used when @yydebug manually has been set to true.

This commit also cleans up dead comments and removes unused code.
(maint) Add token name to Token debug string

This adds the token name to the debug string. It used to only
contain the token text which is not enough since there are several
tokens tht have the same text.