(PUP-2663) Allow string to contain leading sign in numeric conversion

This makes it possible to use an unary +/- in a string. The sign
of the converted value abides by the unary string sign. White space is
allowed around the sign, and at the end of the string.

'+ 2' + '- 2' == 0

This is of value when dealing with original data in string form
that needs to be converted. Without this it is especially difficult to
pass a negative value around in string form.
(maint) Remove redundant code
(PUP-2750) Add hierarchical metric ids to profiler

This commit modifies the signature of the
`Puppet::Util::Profiler.profile` method to accept a new argument,
which is basically a "metric id".  The argument takes the form
of an array of strings/symbols, allowing us to group specific sets of
profiling data into hierarchies and report aggregate profiling
statistics at any level of the hierarchy.

It also adds a new profiler, `Aggregate`, which extends the
existing `WallClock` profiler.  The new profiler tracks the
aggregate timing data based on the metric id hierarchy,
and logs a message containing the aggregate data
at the end of the run.
(PUP-2663) Adjust regexp to only match complete string, and not \n

\s includes newline when ^$ is used.
^$ skips leading and trailing optional matches
\A\z does not skip as they force matching of strings start/end
(doc) Fix YARD docs for iterative functions

This patch adds some fixups to tag syntax and indention so that iterative
function docs are properly formatted by YARD.

No changes were made to the actual content of the docstrings.
Merge pull request #2768 from cprice404/feature/master/PUP-2750-support-hierarchical-profile-data

(PUP-2750) Add hierarchical metric ids to profiler
(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 #2794 from clantant/RE-1497/master/srcs

(RE-1497) Remove quantal from build_defaults
Merge pull request #2700 from hlindberg/PUP-2663_allow-unary-plus-minus-string-numeric-conversion

(PUP-2663) Allow unary plus/minus string numeric conversion
(PUP-2750) Fix aggregate profiler spec tests on windows

It appears that on Windows, the precision of the Time object is
not fine enough to guarantee that we'd get a non-zero value
for the empty code blocks that we were timing in our tests.

This commit simply adds a 10ms sleep to the tests to ensure that
that enough time will have passed for us to be able to make
an assertion that the elapsed time was greater than zero.
Merge pull request #2796 from cprice404/bug/master/PUP-2750-nonzero-time-in-test

(PUP-2750) Fix aggregate profiler spec tests on windows
(PUP-1283) win32-security gem raises a different exception

Previously, puppet relied on win32-security version 0.1.4, which raised
Win32::Security::SID::Error when it failed to resolve a name into a SID.

Newer FFI versions of win32-security raise SystemCallError instead,
which is a StandardError subclass. When trying to run the puppet agent
against newer versions of the library, puppet reports:

    Uninitialized constant Win32::Security::SID::Error

This commit changes the rescue to capture SystemCallError instead. This
exception is defined in ruby 1.8.7 and up.
(maint) Eliminate duplicate constant warning

Previously, when executing specs on Windows the following warning would be
displayed:

    warning: already initialized constant FILE

This commit updates the spec test so it doesn't define a top level constant
Merge branch 'ticket/master/PUP-1283-bump-win32-security'

* ticket/master/PUP-1283-bump-win32-security:
  (maint) Eliminate duplicate constant warning
  (PUP-1283) win32-security gem raises a different exception
(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) Make loaded 4x functions debuggable

The 4x functions where not debuggable because the source file
was not given to the Kernel.eval of the loaded source string. This
fixes the two loaders (4x functions, and 3x transforming functions).
Merge branch 'PUP-2755_fixes-from-review'