Fixed duration initialization from seconds for negative values

DurationBase<T>::fromSec() always sets nsecs <= 0 for negative arguments
while normalizeSecNSecSigned() used in the secs and nsecs contructor did the opposite, asserting nsecs >= 0.
This results in wrong comparisons between Durations constructed differently.

The test has also been updated to cover negative durations.