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)