Added flags for containers, contravariant, distributive and comonad

Hi,

Following the same logic adopted in the [semigroups package](https://hackage.haskell.org/package/semigroups) and my other pull request https://github.com/ekmett/comonad/pull/10 ( I've added flags for `containers`, `contravariant`, `distributive` and `comonad`.

This is also dependent on https://github.com/ekmett/semigroups/pull/32

Cheers