HaskellSource, as planned in #99
HaskellModule, as planned in #99
basic parser combinators
comments and module declarations
Data.Chunks

Because I want the parser combinators to generate the three
HaskellModule sections via Writer, and I need a Monoid instance for
that.
chunk-constructors

The whole point of this data structure was to be able to easily describe
a divider between two chunks. Now it really is easy.
parser combinators now use Data.Chunks
ignore space at the both ends of lines
splitSource

The main purpose of the parser combinators is to divide the original
source into chunks. This is the function which does that.
fix tests

oops! the doctests were not previously being run on that file.
support nested comments

I didn't plan on supporting them, but the machinery I will need in order
to parse import statements happens to do the job.
import declarations

They are more complicated to parse than I expected.
skip empty lines

they can appear anywhere!
first pass at ParseModule using parser combinators

We split the source into three sections of interest: the language
pragmas, the optional module declaration, and the imports.

No information is extracted from these sections yet; I will probably
delegate to haskell-src-ext.
backtrack - drop the parser combinators

I thought I could get away with a few simple parser combinators because
I don't need to recover the full AST of the user prelude, I only need to
divide the user prelude into four sections. But it turns out there are
many details such as nested comments and multi-line import lists which
would require more subtle parser combinators. So I will try a different
approach based on haskell-src-exts's SrcLoc annotations.
move HaskellModule to HaskellModule.Base

to make room for HaskellModule.Parse
extract info via haskell-src-exts

the part which divides the HaskellSource into pieces is hardcoded right
now, but the list of modules and extensions should work.
copy of Data.Monoid.Ord

from http://hackage.haskell.org/package/monoids-0.3.2

I prefer to copy this module instead of adding monoids as a dependency
because (1) the monoids package is deprecated and its successor looks
much more complicated, and (2) monoids depends on other random stuff
like fingertrees because it defines monoids for everything.
remove references to Reducer

I don't need that part of the monoids package, just the Ord instance for
Min.
Location, Located

In order to figure out where to divide the HaskellSource, I need to know
where each section begins. haskell-src-exts already stores this
information, but accessing it is cumbersome. Location makes it easier to
extract the SrcLoc, and Located remembers the earliest location
encountered during a particular computation.