(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-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 #2660 from hlindberg/PUP-121_remove-relative-name-spacing

(PUP-121) remove relative name spacing
Merge branch 'master' of https://github.com/puppetlabs/puppet