feat(library/algebra/group): add ordered semigroups