Initially, I tried to base my functional units on `UnitBase` (or `CompositeUnit`), but I found I needed to make *lots* of changes to `core` to get it to work (e.g., in all of the arithmetic; much cleaner if normal units just do not know how to deal with functional ones).

Hence, functional units are is not a `UnitBase` subclass, but for the equivalencies they have to behave like a unit in some respects. So, I'm trying to ducktype it, but I thought it was best to limit that to only a few places, hence here I use that `Unit` will very quickly pass through unchanged something that it considers to be a unit already.

In the end, I think it may be better to have a minimal Abstract Base Class for units; this may also be good if we ever would like to get the different python units packages to talk to each other.