(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.
(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.
(maint) Add assertions to type factory creation of Resource

This asserts that the given type name conforms to the name rule as we
want to avoid having instances of PResourceType that are not correct.
(PUP-2898) Add 4x style resource expressions

This changes the following:
* Assignment has lower precedence than resource expressions
* Local defaults are supported in resource instantiation expressions
* A Resource body may have a new expression AttributesOperation that
must evaluate to a hash.
* Stricter validation of resource titles
* Changes to TreeModelDumper wrt how BlockExpression is rendered (to
improve debugging output). As a consequence many tests needed
adjustments.
* Tests that previously passed have been modified because of stricter
validation.

This also includes maintenance. Removing dead code/fixing stale comments
and documentation.
(maint) Add private/public to @api tags where this were missing
(maint) Cleanup assignment inside conditional - not needed
(maint) Make logic around "missing file" clearer
(PUP-2898) Make Resource Expr comply with spec (left QualifiedReference)

The LHS (type name) of a Resource Expression is specified as
QualifiedName or QualifiedReference (or to be a Resource[T]). The
implementation did not work when given a QualifiedReference (runtime
error, due to errors in the error checking).

This both fixes the runtime error, and makes a string that
complies with QualifiedReference work. (An actual QualifiedReference
evaluates to Resource[T], so that already worked).

This also removes a call to debugger in relationship operator (that
would be triggered if user tried to create a resource from a non
CatalogEntry type).
(maint) Remove call to 'debugger'
(PUP-2898) Add support for Resource Expr with Class type_name

The specification states that a QualifiedReference of Class should have
the same meaning as if Resource['class'] or the keyword class was used
as type name in a ResourceExpression.  This commit makes it so, it used
to raise an error.

It now also checks if a given Class does not reference a specific class.
I.e. Class[foo] is not allowed.
(maint) Add tests and fix up dump action

There were a few formatting problems with the dump action. This fixes
those up and adds tests around the dump functionality.
(PUP-501) Test resource expression evaluation

This adds tests around the behavior of the current and the future
evaluator's resource instantiation expressions. There are many cases in
the current system where the tests are commented out because there isn't
any consistent behavior.
(PUP-2898) Fix error in *=> implementation

The implementation for *=> looks to have been a copy-paste from the =>
implementation, however the expression attribute on AttributesOperation
is just `expr` and not `value_expr`.