[bug 1072575] Rework smart_timedelta

This changes smart_timedelta so that it handles any valid "int + 'd'"
value as long as the int is > 0.

It also adds tests.
Merge pull request #352 from willkg/1072575-date_delta

[bug 1072575] Rework smart_timedelta