Replace DFPackageNewZip with Create/Open functions

Distinguish between the act of creating a new zip file and opening an
existing one (for reading and/or modification).

The separation between these two functions takes the place of the
mustExist parameter that was accepted by DFPackageNewZip, and also makes
the creation case clearer as it returns an error if the file already
exists. The latter thus prevents accidentally bringing in one or more
files from an old zip file if the intention is to create an entirely new
one.
Add DFFileFormat enum

This defines current and future supported file formats, and comes with
functions to convert to and from a file extension.

Each DFPackage now has a file format associated with it. For those
mapped to a zip file, the format is determined by the file extension.
For those created in memory or mapped to a directory, this must be
specified by the caller at creation time.

The purpose of recording the format of a package is so that a
determination can be made whether it is valid to use in a given
situation (e.g. if it is to be treated as a word document), or what
action to take based on the type (e.g. a different code path must be
taken for docx files vs. odt files).
API classes for concrete & abstract documents

On top of the simple API that specifies get, put, and create functions
based solely on filenames, we now have corresponding functions which
work on concrete and abstract document objects.

These objects are wrappers around a DFPackage, which in turn is a
wrapper around a zip file, directory, or in-memory hash table. They are
intended for where more "custom" conversion situations arise, such as
when you have the contents of a docx file extracted to a directory
(which is what UX Write currently does), or for the test cases where we
construct an in-memory DFPackage from a text-based representation of a
docx file.

Currently the DFGet, DFPut, and DFCreate functions are not yet
implemented. When they are, the DFGetFile, DFPutFile, and DFCreateFile
functions will become wrappers around them.