Reimplement `empty` in terms of a class (#46).
Avoid downgrading to `mempty` for container types
Fix tests
Corrections
Merge pull request #47 from nikita-volkov/empty

Reimplement `empty` in terms of a class (#46)
Merge remote-tracking branch 'origin/master' into yesod1.2