(PUP-1893) Formatting during reporting of changes

This provides good formatting when displaying permissions that have changed in
a clear manner.
(PUP-1893) Formatting puppet resource

`Puppet resource acl location` does not use the same formatting that the object
uses if you implement Puppet::Parameter.format_value_for_display as a custom
change for your particular parameter/property. This is due to behavior in
Puppet::Resource.to_manifest not having access to the full resource and makes a
limited call on formatting the value with
Puppet::Parameter.format_value_for_display without even a should_to_s or
is_to_is (which could help out immensely if it did).

This makes puppet resource believe that our custom Ace object is actually a
hash so that it will have proper formatting for copying into a manifest.
(PUP-844) is_inherited readonly

Is_inherited should be read only since aces are not allow to specify that they
are inherited.
(PUP-1893) cache to_hash

Increase performance of to_hash with a variable that is invalidated when
properties are set.
(PUP-1893) - Minimally test ACE formatting
(PUP-1893) Formatting specs

The formatting for when it is called when applying the changes versus when
puppet resource calls it is drastically different. It will be more preferable to
see puppet enhance the use of puppet resource to use the one that each
parameter has set up instead of the default which allows for zero custom
formatting.
Merge remote-tracking branch 'ferventcoder/ticket/master/PUP-1893_formatting'

* ferventcoder/ticket/master/PUP-1893_formatting:
  (PUP-1893) Formatting specs
  (PUP-1893) - Minimally test ACE formatting
  (PUP-1893) cache to_hash
  (PUP-844) is_inherited readonly
  (PUP-1893) Formatting puppet resource
  (PUP-1893) Formatting during reporting of changes