UCUM repairs to fix errors, mainly changing the order of operations to e...

UCUM repairs to fix errors, mainly changing the order of operations to ensure ProductUnits are returned where needed as some calculations were returning TransformedUnits (multiply/divide on raw numbers) which were breaking in the ProductUnit constructor.

ATOMIC_MASS_UNIT still might be a problem, I fixed this by creating it as an instance of  SI.UNIFIED_ATOMIC_MASS as that is what it's defined as, I believe, creating it as an AlternateUnit is not possible due to UAM not being a proper SI unit.
REM is also a potential issue, I could not create it as an alternate of RAD as they have different quantities.
BARN also needs checking as I can't tell whether the way it is now structured still returns the right result.

Will now compile and pass all tests, except those that are skipped.