4a317893

By: Greg Pfeil <greg@technomadic.org>

Remove `DocEmpty` from `Doc`

This makes the `Doc` structure a little more correct, eliminating cases like
`DocParagraph DocEmpty` and `DocAppend DocEmpty …` (which `docAppend` avoided,
but could still be constructed).

Instead it uses `Maybe Doc`, with `Nothing` as the empty `Doc`.

This also replaces `docAppend` with a `Semigroup` instance (which allows the use
of the `Maybe` monoid).