Haskell: Made several closure operations more efficient
C++: Gave `Group` static methods named `cyclic`, `dihedral`, etc. for
constructing `Group`s of the given families directly
Quaternion() now returns a `Dicyclic` instead of `Dicyclic*`