Plain Unit and Composite Unit now share code using modules / mixins, instead of inheritance. memoizing object hash on Unit::Plain and UnitComposite