extract duration (nanoseconds) calculation into DurationHelper
let TimeUnitCollection validate unit_names; cleanup
move duration and unit calculation to DurationChain