(PUP-121) Make include, require, and contain enforce non relative names

This makes include, require, and contain functions transform
relative names to absolute names before doing any lookup.

The transformation is controlled by a metho on scope that is
always called, and that performs the transformation when Puppet[:parser]
== future. This design was selected to ensure that there is one place to
later change (other flags, or in Puppet 4 when the future will
be something else).
(PUP-121) Add more tests, doc, and correct behavior

This generalizes the "make names absolute" to a transformation
of given arguments to class names strings suitable for lookup, and
also applying the transformation to Class and Resource reference types.
(PUP-121) Make examples for relative/absolute shared

This makes the examples that test include, require, contain
share the same tests.

This also adds one missing error condition.
(PUP-121) Improve documentation of include, require and contain
(PUP-2622) Use non-zero exit codes for unknown subcommands.

Previously, if users execute 'puppet foo', an error message is displayed
about unknown subcommand 'foo', but puppet still exits with a zero exit
code indicating success.

Additionally, if users execute 'puppet --option <valid_subcommand>',
puppet silently ignores the option, prints a message, and exits with a
zero exit code.  As a result, a user accidentally transposed a valid
option for a subcommand with the subcommand itself in an automated context
and puppet did not report a failure.

This commit fixes both conditions by exiting with 1 from the nil and unknown
subcommands where appropriate.  It also prints error messages using the same
colorized output we use for usual puppet errors.
(PUP-121) Fix typo
(PUP-121) Make Puppet::Resource work in transform_and_assert_classname

The type system types are transformed to 3x API Puppet::Resource
long before the functions call back to transform_and_assert_classname
and this functions also needs to handle Puppet::Resource.
(PUP-121) Ensure classes are absolute when transforming to Resource

When the 3x to 4x calls take place, resource references in the form
of a PCatalogEntryType are transformed to Puppet::Resource.
Depending on where these (reference) Puppet::Resource instances are
used they need to either be absolute, or not (yes, 3x is inconsistent).

Since future parser in 3.7 (and later 4.0) will not support dynamic
name scoping, the PCatalogEntryType's should in general be absolute.

This commit changes the transformation to make the created
Puppet::Resource (references) absolute (when it is possible).

This also adds more tests
(PUP-121) Change transformation of CatalogEntryType to not be absolute

The attempt to make all catalogEntryTypes absolute did not
work out so great as the lower level APIs in 3x expect non :: prefixed
names to be absolute.

This changes the transformation made in the evaluator to always use
"relative" names.
(PUP-121) Remove unused ability to enforce absolute type refs

This removes the unused ability in the evaluators transformation
to 3x for resources to also make the reference absolute.
Merge pull request #2721 from peterhuene/pup/2622

(PUP-2622) Use non-zero exit codes for unknown subcommands.
Merge pull request #2660 from hlindberg/PUP-121_remove-relative-name-spacing

(PUP-121) remove relative name spacing
(maint) Allow exit code of 1 for unknown subcommand acceptance test.

Fixing acceptance test to now allow for an exit code of 1 when the
"unknown subcommand" error is returned from puppet.