Add support for managed entries in the container.

This is the basis for managing access to reserved directories within a
container.

The META-INF directory is now registered in this manner.
Add simple managed file support.

This simply reserves the name from general use at this point.
Add managed file support to directories.

Also register the reserved files in META-INF as an example.
Forward the entries method.

This grabs all the entries in the zip as a Enumerable.
Verify and "optional" functionality for ManagedEntry.

This requires that the ManagedEntry classes have more of a concept of hierarchy
so when they are registered they now have a parent set.

Verification also requires that a managed entry can be set to be required or
optional, so this is also now supported too.
Move reserved and managed entry code to modules.

Now mixed in to Container.
Use reserved and managed entry mixins for managed directories.

File and directory names are given from the root of where they are accessed.
So:
* (Container).managed_file?("META-INF/container.xml") #=> true
* (ManagedDir).managed_file?("META-INF/container.xml") #=> false
* (ManagedDir).managed_file?("container.xml") #=> true
Better initialization of managed entry support.

There is a now an init method for classes that mixin the module to call.
Fix creation of subclassed Container objects.

When the initial file has been created it was then not being reopened correctly.
Add extra tests for managed entries.

Test the creation of subclassed containers with required files and directories,
including validated content.
Reorganize the managed and reserved support files.
Make file validation more flexible.

A protected method, ManagedFile#validate, is added. This is set up by default to
stop the entire file contents be loaded into memory if no validation is required
but also provides a point where more complex validation can be added if it is
overridden.
Fix the source of failing validation messages.

If a file in a directory failed validation for any reason the message in the
raised error came from the parent directory, not the file itself.
Merge branch 'rh/managed' into next

* rh/managed:
  Fix the source of failing validation messages.
  Make file validation more flexible.
  Reorganize the managed and reserved support files.
  Add extra tests for managed entries.
  Fix creation of subclassed Container objects.
  Better initialization of managed entry support.
  Use reserved and managed entry mixins for managed directories.
  Move reserved and managed entry code to modules.
  Verify and "optional" functionality for ManagedEntry.
  Forward the entries method.
  Add managed file support to directories.
  Add simple managed file support.
  Add support for managed entries in the container.
Update the version, readme and changelog for release.
Merge branch 'next'

* next:
  Update the version, readme and changelog for release.
  Fix the source of failing validation messages.
  Make file validation more flexible.
  Reorganize the managed and reserved support files.
  Add extra tests for managed entries.
  Fix creation of subclassed Container objects.
  Better initialization of managed entry support.
  Use reserved and managed entry mixins for managed directories.
  Move reserved and managed entry code to modules.
  Verify and "optional" functionality for ManagedEntry.
  Forward the entries method.
  Add managed file support to directories.
  Add simple managed file support.
  Add support for managed entries in the container.
  Prevent the licence from being included on the UCF page.