Nicer Docx type

This modifies the Docx type in the parser to avoid all the extra files
(Notes, numbering, etc). These are parsed at the beginning and put into a reader monad.
The reader monad is stacked with ErrorT to enable better
error-handling than the old Maybes. (Note that the better error handling
isn't really there yet, but it is now possible.)

One long-term goal of these changes is to make it easier to write the Docx
type. This should make it easier to develop a standalone docx package in the
future.