Fix Duration conversion from String for negative millisecond durations.

### Problem

While conversions of negative durations <= -1 second work

    (new Duration("PT-1.001S")).getMillis == -1001L

they fail for negative durations between zero and -1 second:

    (new Duration("PT-0.001S")).getMillis == 1L

(should be -1L instead).

### Fix

The attached code fixes that.
See Test class changes for some examples.