(PUP-3680) Remove confusing convenience Hash[value-type]

In an attempt to be helpful, the type system offers a convenience
that if a Hash type is specified with one key, then this is taken
as being the type of the value (and the key type defaults to
Scalar).

In practice this proved to be confusing as it raises the question
about if it is the key type or the value type that is being
specified. Some users thought it was they key type, as that is
what they wanted control over, others thought it was the value type.

From a consistency standpoint (a Hash is a Collection), it could
be viewed as being a collection of Tuple[Key, Value], but implementing
that is not very helpful (it is just more to type). The best solution is
therefore to simply remove the convenience and require both Key and
Value type as a minimum. (This also removes the confusion over the error
if wanting to specify Hash[Value, 2,5] (which fails because 2 is not a
type). Now users have to specify the full type: Hash[Key, Value, 2, 5]
if they want to add min and max entries.
(PUP-3240) Remove ignoreimport setting

The ignoreimport setting has played out its role since the
import function has been removed.
(maint) Remove obsolete and commented out spec tests for Rdoc support
Merge pull request #3361 from hlindberg/PUP-3680_remove-hash-type-only-value-param-convenience

(PUP-3680) Remove confusing convenience Hash[value-type]
(PUP-659) Remove ability to have multiple names in a scope

This removes the ability for a scope to have multiple namespaces.
The mechanism was not used for anything productive and resulted
in performance overhead.

This also removes serching through multiple namespaces (given
by a scope, as well as all wider namespaces of a given name). This
was also not used because references are now always exactly to
the referenced element (except for variables which are handeld a
different way).

There were many tests that tested the implementation of the
TypeCollection class and its support for features that were not used.

There will be additional cleanup in this area, such as changing the
API.

This commit makes it just as fast to reference with names that are not
using an initial :: as it is without. Before this change references
without :: took 1.5x as long.
(PUP-659) Change find class/define API by removing unused args

This removes the parameters for an array of namespaces to search
as well as the options (where it was possible to pass an assume_fqname
option with special meaning).

No the api is much simpler - lookup the name that is wanted; no more, no
less. It should be given in the correct form (downcased), but it may
start with '::'.
(maint) Clean up stale comment regarding < 3.5.0 implementation
(PUP-659) Remove fully_qualified flag from compiler evaluate classes

The method evaluate_classes had a flag (added in 2012 to work around
a problem with relative names) that after removal of relative
adressing had no effect.

This commit removes the extra flag.
(maint) Remove overly complex code in resource/type/parent_type

The logic in this method was overly complex, dealing with cases
that are irrelevant in Puppet 4.0 since node inheritence has
been dropped (that seemed to be the reason judging from a
TODO: comment).
(PUP-659) Optimize debugging calls

This optimizes debugging calls by allowing it to be called
with a block. This optimization is good because many calls
to Puppet.debug needs interpolation of a long string. This
(and internal housekeeping in the debug method) can be
completely avoided if puppet is not running for debugging.

By changing a call like this:
    Puppet.debug("This interpolates #{x} and #{y}")
to
    Puppet.debug{"This interpolates #{x} and #{y}"}

Reduces the cost to 40% of the original and more if the string is
longer, or has more interpolation/method calls involved to get
the values via a getter etc.

A call to debug_once should be guarded with a check if Puppet is
debugging (one such change was made).
(PUP-659) Fix tests after rebase

Tests were added/modified that passed an empty name space to
the find_definition method and this method is changed in the optimized
version.
(PUP-659) Remove commented out code
(maint) Add qualified variable lookup benchmark

This commit adds a benchmark to test the compilation of many qualified
variable lookups in a manifest.
Merge pull request #3406 from briancain/maint/master/add-qual-var-lookup

(maint) Add qualified variable lookup benchmark
Merge pull request #3359 from hlindberg/PUP-659_optimize-qualified-variables

(PUP-659) Optimize qualified variables
(maint) use el 6 master for Solaris agent testing

Prior to this commit, we were using Solaris masters to test agent
acceptance. This commit standardizes our master platform for Solaris
agent testing to match that of our Windows agent testing.
(PUP-3736) Restart a service when the flags are modified
(maint) Remove facts REST api docs

The 'facts' indirection was removed in commit 22f4e59 as part of
removing the inventory service (PUP-2560).

This commit removes the related REST API documentation.
Merge branch 'stable'
Merge pull request #3394 from rji/maint/stable/el6-masters-for-win-sol-agents

(maint) use el 6 master for Solaris agent testing