Added `OptionalMonoidFromSemigroup` and tests.