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.
Merge pull request #4 from segv/negative_duration

Handle durations with negative day/sec/nsec