(PUP-2693) Fix length calculation for sq-string

The calculation of string length was done wrong for dingle
quoted string resulting in negative lengths.
(PUP-2807) Add output of containing scope for log functions

The log functions in 3x outputs th name of the containing scope
(for notice etc.). The reimplemented methods for the 4x function API
did not include this behavior.

Now, the calling scope is passed to the Logging utility to be output
the same way as for 3x.
(PUP-2831) Make Puppet work with RGen 0.7.0

This updates the Gemfile to use RGen 0.7.0 (optionally).
In RGen 0.7.0 containment now works as specified, if something is
contained more than once, it moves to the last container that contains
it (by removing it as contained from all other containers). This caused
problems in the Function API where the block default Callable type was
reused for all signatures (and thus moved). There were also problems in
tests where the same type instances was contained in multiple locations.

This fixes these to use distinct instances.
(maint) Remove dead code
(PUP-2833) Make all types inherit PAnyType

Some types inherited PAbstractType (to indicate they where not
concrete). This just causes confusion when using the Ruby API
to check if a Type is PAnyType.

This makes all types inherit from PAnyType (which is the only
type inheriting from PAbstractType).
(RE-1497) Remove quantal from build_defaults

This commit removes quantal from all build defaults because it is end of
life. It removes the defaults from the build_defaults yaml.
Merge pull request #2807 from clantant/RE-1497/stable/srcs

(RE-1497) Remove quantal from build_defaults
(maint) Disable timesyncing for acceptance tests

We have been seeing windows time service errors on 2008R2 while
performing time syncing. This step should not actually be necessary
as vsphere seems to provide synchronized time across VMs from the pool.
(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.
(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.
(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.
(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.
(PUP-2858) Remove use of Puppet[:evaluator] from the code base

This removes all usage of Puppet[:evaluator] from the code base
since it is (in this version) enough to check if Puppet[:parser] is
'future' as the future evaluator is always used.
(PUP-2858) Refactor EvaluatingParser::Transitional to EvaluatingParser

This merges the behavior of the Transitional subclass of the
EvaluatingParser into the main class, as the hybrid solution is no
longer a supported alternative.

As a consequence, all references to the
Pops::Parser::EvaluatingParser::Transitional has been changed to
just Pops::Parser::EvaluatingParser.

This commit alters no behavior.
(PUP-2858) Remove the 3_1 checker and its factory

This removes the Checker_3_1 and its factory from the code base.
This hybrid checker contained less validation (less string) than
the 4.0 checker and its main purpose was to fail expressions that
could not be evaluated with the 3x AST based evaluation (such as -=).

It is also not meaningful to continue its development as the new
4_0 checker is far better. If there is a later need to check
for "backwards compatibility" to 3x, it is better to start fresh with a
new copy of the 4_0 evaluator.
(PUP-2858) Refactor binder to use ne evaluator

The binder always transformed to 3x to get executable code. This
is not needed when using the new evaluator.
(PUP-2521) Remove windows-pr

 - Windows::Error no longer exists and the ERROR_FILE_NOT_FOUND
   constant is part of the Puppet codebase now.
 - Catch appropriate error in package specs
 - Remove windows-pr, win32-api and windows-api from gemspec
(PUP-2858) Remove duplicated testing (evaluator = 'current')

There was a test (environment_spec) that ran an extra time
with the hybrid parser = future, evaluator = current which results
in the same tests running twice. (This because the future evaluator
is enforced when runing with future parser).
(PUP-2886) Add validation for reserved type names

Before this it was possible to name classes and defines with
words that are reserved by the type system (e.g. 'integer'), while
the name is not a type (Integer is a type, but integer is not), the
definitions will automatically create a resource type named with
an upper case initial letter, and will thus be difficult to reference.

For that reason it is better to error on these names statically.