Add FILE_ALL_ACCESS to full

This ensures that when you set FULL access in Windows GUI, it shows up in
the provider also as full access. This was the flag that was missing to bring
the provider on par with reality.
(docs) Limitation on Symlinks

This notes that ACL provider for windows will not handle symlinks in
v1 (at the very least).
(doc) Limitation with autorequire of users

This notes that using SIDs will limit to finding User[SID]
and User[FQDN\Username] and won't be able to find
User[Username] (even though it is more commonly seen).

The short story is to avoid using SIDs if you need autorequire.
autorequire users

This commit provides autorequire for users that are specified in both the owner
and each of the identities in the permissions.  This will check the identity
based on the name and provider.get_account_name() to cover the cases where one
might use  SIDs versus names.
(review) Adding note about different ways of autorequiring
(maint) specs moving from integration to unit

There were specs in integration that did not need to be located over in the
integration specs, so those were moved over to unit.
(maint) make refresh_sd optional for get_security_descriptor()
(PUP-844) Use SID when system returns non-existing user

Prior to this the system was returning identity=>"" for a non-existing user. As
this does not evaluate to nil it was causing a non-empty error during validation
instead of setting it to the SID properly.
(maint) updating comments
(PUP-847) Manage owner

This sets owner on the security descriptor. This also sets in checks to be sure
the user account exists prior to application of the user on the sd.owner.
(PUP-847) owner_to_s should not show as ''

When the actual owner account doesn't exist, show the value instead of the
fully qualified value.
(PUP-848) Manage inherit_parent_permissions

This provides the ability to manage the protect bit on security descriptors for
file paths.
(PUP-845) Invalid target should fail gracefully

This provides a nice error when the file target path doesn't exist. Prior to
this the message may not have lead a user to know it was due to trying to get a
security descriptor on an invalid target.
(PUP-1737) permissions_to_s should not return ''

Prior to this if a user did not exist, getting the FQDN account name would have
returned ''. This attempt to get the FQDN with a fallback to just return the
value. This is seen when a user you are attempting to get doesn't exist.
(PUP-1737) Confirm identities exist

This checks to be sure that each of the identities specified in the manifest
exist prior to setting permissions. If one or more accounts do not exist, this
raises an error letting the user know that the users don't exist.
(PUP-844) Add group to ACL

This adds group management to acls.
(PUP-847) Manage group on Windows Provider

This provides manages group account on the Windows provider. This works
 similarly to Owner management.
(PUP-1737) Patch win32-security for legacy versions

This relates to PUP-1284 with a backwards compatibility to older versions of
puppet that have not been patched. This will allow the ACL provider to work
properly with those older versions by correcting unsafe stripping of the SIDs
when something appaears to be whitespace.

This checks the gem version of win32-security and only applies the patch if the
version is known to have the incorrect functionality.

See https://github.com/djberg96/win32-security/issues/3 for more details.
(PUP-844) use local variable

This came out of review, to add readability to the assignment of @identity in
ACE.
(PUP-844) cleanup autorequire file

This makes what autorequire is doing more readable by shortening the branching
and removing some extra checks on the length.