[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.

Quick r?