Use a spearate CMakeLists.txt for each module

Divide up the build process into modules, by having a separate
CMakeLists.txt in the root directory of each module (api, core,
platform, unittest, odf, ooxml, and latex).

The most important reason for doing this is so we can have a different
set of valid include directories for each module, allowing us to enforce
separation (e.g. functions in core should not call the ooxml filter).
These restrictions aren't actually enforced yet - every build file still
has every directory as a valid include location - but in the near future
we will begin to tighten these up so that only the module-public headers
will be accessible from other modules.