(PUP-2904) Make functions 4 API require symbol param names

There was a mix of String and Symbol in our code. This enforces
that parameter names must be Symbol. Thus it is up to the caller to
use the right thing as this is better than performing an intern
(performance and may intern something big/bad).
(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-3521) Fix Puppet's exception swallowing

Fix Puppet's exception swallowing by finding places where an
Exception is rescued and swallowed and making their rescues
more granular.
(maint) acceptance config cleanup

This commit removes the full template path from all our acceptance
configs, and replaces vcloud.delivery.puppetlabs.net with
vmpooler.delivery.puppetlabs.net. It also removes the 'filecount' config
parameter since it isn't used for anything.
(PUP-3267) Remove httplog setting, which was used when the agent ran a web server
(maint) Update man pages
Merge pull request #3393 from rji/maint/stable/acceptance-config-housekeeping

(maint) acceptance config cleanup
Merge branch 'stable'

Conflicts:
	acceptance/config/nodes/solaris10.yaml
	acceptance/config/nodes/solaris11.yaml
	acceptance/config/nodes/win2003r2x64-rubyx64.yaml
	acceptance/config/nodes/win2003r2x64-rubyx86.yaml
	acceptance/config/nodes/win2003r2x86-rubyx86.yaml
	acceptance/config/nodes/win2003x64-rubyx64.yaml
	acceptance/config/nodes/win2003x64-rubyx86.yaml
	acceptance/config/nodes/win2003x86-rubyx86.yaml
	acceptance/config/nodes/win2008-rubyx64.yaml
	acceptance/config/nodes/win2008-rubyx86.yaml
	acceptance/config/nodes/win2008r2-rubyx64.yaml
	acceptance/config/nodes/win2008r2-rubyx86.yaml
	acceptance/config/nodes/win2012-rubyx64.yaml
	acceptance/config/nodes/win2012-rubyx86.yaml
	acceptance/config/nodes/win2012r2-rubyx64.yaml
	acceptance/config/nodes/win2012r2-rubyx86.yaml
Merge pull request #3395 from kylog/issue/pup-3267/remove-setting-used-by-kick

(PUP-3267) Fix straggler setting used for puppet kick
(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-2904) Correct documented type of the name param

The documented type of the parameter name in the param method
was still showing 'String' when it is now required to be a Symbol.

This commit corrects the documentation comment.
Merge pull request #3360 from hlindberg/PUP-2904_consistent-func-api-wrt-param-names

(PUP-2904) Make functions 4 API require symbol param names
(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).