document Config.Base
document and unify Config.Cache

As I was documenting Config.Cache, I discovered and fixed a small
inconsistency. If the goal of (<//>) was to avoid the awkwardness of
the code listing the components in the opposite order from what we are
constructing, why were other functions allowed to use the wrong order?
Fixed.

The doctest will fail on Windows, oh well.
document Config.Compile
documenting Config.Extend

I have tried to hide the messy ByteString conversions which was
obscuring the meaning of the doctests inside a helper function.

Writing the tests first also allowed me to find (and fix) a bug in our
calculations of the LINE pragmas, which is kind of what tests are for.
document Config.Parse
rename parseX to readX

I want to separate those functions into a readX version, which opens a
file and parses the contents, and a parseX version, which only does the
parsing. This will make the parseX function testable.
split parseX from readX
test parseModules instead of readModules

why go through an intermediate file if we can test the pure version.
reorder arguments to favor currying
remove unused import
fix orphan instance
document Hawk.Config
clarify function names in Config.Extend

`not . importsPrelude` is more clear than `shouldImportPrelude`, because
the former explains under which conditions we should import the Prelude
module. Since the resulting code had a bunch of `not`, I have removed
them and swapped the condition of `addIfNecessary`.
document Hawk.IO

no module comment, one was provided on another branch.
document Hawk.Lock
document Hawk.Options
document the main Hawk module.
Merge branch 'doctests' into develop