Reimplement `empty` in terms of a class (#46)

As you can see, it makes it possible to get around without `Monoid`'s `mempty` for container types, thus fixing the example presented in #46