Allow durations with negative values for day/sec/nsec.

This change forces the three values used to make a duration to either
all be positive or all be negative.
Random testing for duration+ and timestamp-difference.