(maint) Correct ssl/puppet_cert_generate_and_autosign test to do what it says it's doing.

Prior to this commit, the test was incorrectly specifying autosign=false
when attempting to test the behavior when autosign is true. This looks
like a simple copy-paste error as the test right above is exactly the
same. This commit correctly specifies the autosign value.
(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-2691) Re-adding the missing ‘description’ property to P::MT::Metadata.

Prior to Puppet 3.6.0, users had a ‘description’ property which they
could reliably expand into their module skeleton’s ERB templates.  This
property was removed from the default set of properties in Puppet 3.6.0,
which effectively broke template expansion for users relying on it.

This change ensures that users can continue to rely on this property.
(PUP-2703) Make 'tag' be a statement function

Tag function should not require parentheses.
(PUP-1852) Deprecate the 'search' function.

This function is deprecated because support for dynamic scoping
has been removed in general and this function makes it possible
to abuse the systems ability to search multiple disjunct name-spaces.
(maint) spec: allow expectations of resources from compiled manifests

Add logic to the PuppetSpec::Compiler.apply_compiled_manifest method so that
a spec test can supply a block that processes the single resources
that comprise that catalog that was compiled before it is run in a transaction.

As a proof of concept and general helper, add a apply_with_error_checks method,
that adds an expectation to never send an :err signal to each resource. This
makes spectest debugging much easier, because without expectations,
the transaction will just finish and the only reported error will be that the
end result is not as expected. When the expectation is added to each resource,
rspec will display all resource error messages as failed expectations.
(PUP-2079) Add no-op PMT generate template format.

Prior to this commit, the mechanisms available for writing skeletons containing ERB templates
were awkward at best (and broken at worst).

This change adds a new template extension for module skeletons that has the (somewhat counter-
intuitive, when described this way) behavior of performing no alterations to the given template.
In this way, one could place a file like `foo_bar.erb.template` in their module skeleton, and
generated modules would contain a file named `foo_bar.erb` with the exact contents of the
`.template` file.

This will also close pull requests #2468 and #2688.
(PUP-1100) Create_resources syntax error message spec test

This commit adds a check for the create_resources syntax error message.
If there is a syntax error, the error given by puppet master is unclear.
This commits adds a test to check that the error message is correct and
makes sense.

This only happens when the resources are auto imported, which is why I
use a fixture directory.
(PUP-1100) Fix error message with create_resources and auto-loaded class

This commit fixes the error message displayed by PM when a syntax error
is present on an file auto-loaded by create_resources.
(PUP-2798) Remove warnings for reserved words in 3x regular.

We are issuing too many deprecation warnings for people to keep up.
The migration paths is to use the future parser/evaluator to "future
proof" manifests.

This only changes the warnings for 3x regular. And is basically a
reversal of part of PUP-1027 where these warnings were added).
(PUP-839) Add read_word alias to FFI::Pointer
(PUP-839) Add missing &block params to Security
(PUP-839) Remove windows/handle from Security

 - Use shared Use FFI::WIN32.CloseHandle method
 - Make explicit that open_file returns nil, where it was previously
   returning the exit code from CloseHandle
(PUP-839) FFI with_process_token to Process class

 - Refactor with_process_token, moving it into Process class and
   using FFI in the process.  Additionally return nil since there is
   nothing else to return
 - Add deprecation warning for existing with_process_token
(PUP-839) FFI Puppet::Util::Windows::Security vol

 - Remove windows-pr volume class mixin, and implement
   GetVolumeInformaitonW with FFI.  Use closure to capture supported
   value inside of a MemoryPointer release block. Fix minor bug where
   the bitwise check was not comparing against test value, but 0.
 - Requires wide_string from Puppet::Util::Windows::String and
   a constant from Windows::File
(PUP-839) FFI Util::Windows::Security / ::File

 - Remove windows-pr file class mixin for Windows::File and implement
   CreateFileW in Security.
 - Note that open_file overlaps with create_file in file.rb
 - Add FFI GetFileAttributes and SetFileAttributes to File module
 - Move all file attribute related calls out of the Security module and
   into the File module, including get_attributes, add_attributes,
   remove_attributes and set_attributes.  Add corresponding deprecation
   notices.
 - Add a top level FILE alias for Puppet::Util::Windows::File and
   use that to make calls to the APIs / constants in File.
 - File must be included prior to Security to use these constants.
(PUP-839) FFI Windows::Util::Security.set_privilege

 - Don't call LookupPrivilegeValue directly anymore, instead call
   Puppet::Util::Windows::Process.lookup_privilege_value which has
   already been FFI'd.  Use FFI structs for LUID_AND_ATTRIBUTES and
   TOKEN_PRIVILEGES
 - Ensure that set_privilege has a well-defined return value of true
   when it succeeds, or raises otherwise.
 - Remove TOKEN_QUERY privilege since AdjustTokenPrivileges is not
   filling in a buffer with existing LUID information.
(PUP-839) FFI AddAccessAllowedAceEx

 - FFI calls made to AddAccessAllowedAceEx and AddAccessDeniedAceEx and
   properly verify their return codes against FFI::WIN32_FALSE.
   Further, return nil explicitly when not raising.
 - Update call site in set_security_descriptor accordingly, using and
   freeing a FFI::MemoryPointer for the ACL.
(PUP-839) FFI Util::Windows::Security.IsValidAcl

 - Replace existing calls to IsValidAcl with FFI'd versions, and
   properly handle exit codes