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).