Better negative assertions in the tests.

Use "refute()" instead of "assert(!)".
Fake up the connection to ZipFileSystem.

This allows the ruby-like File and Dir classes to respect the reserved names.
Implement Container#get_output_stream to respect reserved names.

This method was previously forwarded through to the underlying zip file. Now
there is an explicit test to stop files with reserved names being opened for
writing.
Can now set comments on the UCF document.

This is allowed by the UCF spec so might as well allow it here too.
Note whether the UCF document is on disk or in memory.

At present it is always on disk and never in memory as the buffer methods have
not been implemented yet but this is important infrastructure for that process.
Implement the close and commit methods.

This is in preparation for the handling of memory resident UCF documents. The
close method had to be implemented too so that it could be set to call the new
local version of the commit method instead of the one in ZipFile.

In actual fact the close method is an alias for the commit method as in the
underlying zip implementation the close method simply calls the commit method
with no additional logic.
Forward the commit_required? method.

This allows for checking whether changes to the UCF document have been saved.
Separate the opening and checking of a UCF document.

This should make it easier to cope with both file and memory resident UCF
documents.
Documentation improvements and cleanup.