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.
(I think `(3.3).isNaN` does box, but I don't think `Double.NaN` does, I think that's a constant like `Int.MaxValue`. I can double-check that though.)