Move parse* functions out of InternalParser.ly

This commit reduces the boilerplate involved in adding an additional
parser.  It achieves this by using typeclass defaults in the Parseable
class to define the 'parse', 'parseWithMode', and 'parseWithComments'.
It adds some new exports (a whole new module, even), and only
introduces one minimal API breakage.

This API breakage is that now the instances of Parseable for the
Annotated types specify SrcSpanInfo, instead of being polymorphic on
annotation.  This is good, because typical usage would be to
instantiate 'loc' to 'SrcSpanInfo', and the implementation uses "fmap
fromSrcInfo".  So, this means before when using this instance, we'd be
copying the entire AST just to apply "id" to each annotation.  If the
user really wants this, then they can use "fmap fromSrcInfo".  I
highly doubt this change will break any users.

The NonGreedy newtype wrapper is used to indicate that a particular
'Parseable' instance isn't greedy in its consumption of input.  In
other words, once it's parsed the thing it parses, it does not
consume additional input.  This also means that parse errors won't
be detected in the suffix of the input.

The ListOf newtype wrapper is used to yield a list of Parseable
results, complete with SrcSpanInfo.

Despite only being used for module pragmas in this commit, these
newtypes are useful for many other Parseable instances.
Remove trailing whitespace