Wrote most (all but `isAbelian`) of a generalized dihedral group class in C++
Added a default implementation for `isAbelian` in BasicGroup.hpp
Made `lattice` in lattice.py compute & return the subgroup lattice top-down
rather than bottom-up, making it more suitable for determining maximal
subgroups