(PUP-1737) Manage Permissions (PUP-851) Manage Propagation (PUP-846) Manage Inheritance (PUP-1893) Formatting

This provides managing permissions, which also requires propagation and inheritance to work correctly.

This also provides an extensive amount of documentation for the type and different usage scenarios.

With formatting, this is a start to the formatting fix but should not be considered the final fixes.