Add support for lattices.

Since we started this project, Spire added support for boolean algebras,
heyting algebras, and lattices.

This commit adds type classes for these types.
It definitely compiles. The point of the `override` is that its parent (`MeetSemilattice[A]`) has a method that returns `Semilattice[A]`, but it would prefer to guarantee that it returns a subtype of that (`BoundedSemilattice[A]`).