Simplify the class hierarchy a bit

`UnitNormalForm` now derives from `DecidableUnits` and `DecidableAssociates`,
and `GCDDomain` now derives from `UnitNormalForm` and `DecidableZero`.