(PUP-2794) Modify the shared spec for iterative functions

This updates the shared tests for iterative functions to also
be capable of handling reduce. This also adds missing tests
that were part of one of the individual tests earlier.

The test for reduce now also invokes the shared behavior for argument
checking.
(PUP-2794) Cleanup dead code and fix spacing in tests
(PUP-2794) Remove Util::Functions::IterativeSupport

This removes the now unused Puppet::Util::Functions::IterativeSupport
as it is no longer being used. The smaller check is now part of each
function, and the block arity checking is done declaratively using
an apropriate Callable type for the functions' block_type.
(PUP-2794) Fix problem with check for >0 params

There was a problem with the check for empty range, as the size
of a range Integer[0,0] is not 0, but 1 (there is a 0 in the range).

Also adds test to check that type parser produces a Callable with
a Unit type when the range so requires.
(PUP-2794) Fix failing test after correction of has types > 0 check
(maint) Pin puppet git acceptance to use facter 2.0.2

Previously, when running acceptance tests on platforms that still use
git checkouts, e.g. Windows, we were installing puppet#stable and
facter#stable. However, we recently released facter 2.1, which now
resides in facter#stable. On Windows, facter 2.1 requires a newer
win32-security gem than what puppet#stable installs, causing errors
like:

    lib/win32/security.rb:54:in `elevated_security?': Incorrect function

This commit ensures we install facter 2.0.2 (commit 7845c9aa0df) when
running acceptance from git checkouts. This should only affect Windows
and Solaris, as Linux acceptance runs against packages, which will pull
in the most recently released dependencies.
(maint) Move the interative functions shared behavior to common dir

This commit moves the shared behavior for iterative functions to
shared_behaviours/iterative_functions.
(PUP-1283) Upgrade win32-service gem

This upgrades win32-service from 0.7.2 (native compiled gem) to
0.8.4 (FFI-ed gem), which is a step in getting puppet to run on x64
ruby.
(PUP-392) update win32-eventlog

This brings eventlog up to the latest gem and fixes the constants it uses.
(PUP-392) Upgrade win32-process

 - This upgrades the win32-process gem from 0.6.5 to 0.7.4.
 - Win32::Process wil not return a custom error anymore, just SystemCallError.
  Since this can be used for amny things, limit down SystemCallError to be
   rescued only if we are on Windows.
(doc) Fix "mangement" typo
(PUP-2752) Fix for invalid semvers

Prior to this commit the module tool would fail to perform any actions if any
module found in the modulepath had an invalid semver.
This commit warns about invalid semvers in installed modules, sets the version to
0.0.0, and moves on. This allows the module tool to continue to work, even with the
invalid semver found in the path. This commit also adds some rudimentary tests
for the Puppet::ModuleTool::InstalledModules class.
Merge pull request #2832 from henriquer-noths/master

(doc) Fix "mangement" typo
Merge pull request #2741 from adrienthebo/maint/puppet-4/document-event-manager

Maint/puppet 4/document event manager
(PUP-2878) file conflict upgrading from 2.7.26 to 3.6.2

Currently, upgrades from 2.7.26 to 3.6.2 break because of a file
conflict. It seems that as of Puppet 3.3.0, the manpages changed from
being owned by the puppet package, to being owned by the puppet-common
package. This change was initially done to allow upgrades from Debian
packages to ours. However, changing which package owns a given file
makes upgrades difficult. This commit adds in conflicts to allow smooth
upgrades from puppet packages prior to the manpage change to the current
version.
Revert "(maint) Correct ssl/puppet_cert_generate_and_autosign test to do what it..."
Merge pull request #2833 from puppetlabs/revert-2679-maint/master/correct-ssl-cert-generate-autosign-test

Revert "(maint) Correct ssl/puppet_cert_generate_and_autosign test to do...
Merge pull request #2824 from peterhuene/pup/2866

(PUP-2866) Read UID_MIN from login.defs instead of hardcoding value.
(PUP-2858) Remove e_parser adapter support

This removes support for the hybrid future parser/old evaluator
by changing the ParserFactory to always select the future parser/
new evaluator combination. As a consequence, the EParserAdapter
is no longer needed and it is now dropped together with its tests.
(PUP-2858) Deprecate the use of Puppet[:environment] == current

This changes defaults.rb to deprecate the use of :environment = :current
The future evaluator is always picked by the Parser::Factory and
the setting has no effect. It may have effect in future versions of
Puppet (for additional experiments when Puppet 4.0 is released). For
that purpose, the settings is not completely removed.