OOXML: Move all typedefs to dedicated header

One of the reasons for the excessive number of header files included in
various places was that there were types used by some functions, where
those types are not necessarily used by all source files which need to
include a given header.

For example, WordPackage.h referenced types from OPC.h, so every file
that used any functions form WordPackage had to also include OPC.h.
Previously, OPC.h would just be included as part of WordPackage.h, but
with the move away from including headers inside other headers, it meant
this had to be replicated in every source file.

In practically every case, the only thing that was *actually* needed
from the header was the typedef. For example, there's a struct called
OPCPart defined in OPC.h, and we have the following typedef to avoid
having to write "struct OPCPart" everywhere:

    typedef struct OPCPart OPCPart;

Since WordPackage.h depends only on the typedef - not any of the other
stuff defined in OPC.h - we can get away with moving the typedef into a
separate header. To simplify things, we put all such typedefs used by
the OOXML into a single header, OOXMLTypedefs.h.

An alternative to this would be to use "struct OPCPart" (and similarly
for other types) everywhere they are mentioned in the header, and to do
a forward declaration of the form "struct OPCPart;" at the top of the
header if it's only used for function parameters. However this seems
more cumbersome; the approach of having a header per module dedicated to
typedefs allows us to continue using the bare names without "struct".

As a result of this change, many of the #include statements present in
the OOXML source files have now been able to be removed. This also makes
the dependencies of the code in these source files a bit clearer.