Handle negative times in time_unit

The normal use of time_unit was in the timings produced by the run
command (and other variants), so it would not in those cases return a
negative time difference unless:

  * the system clock changed by a system administrator
  * the system clock was skewed or adjusted by NTP
  * the system clock was skewed in a Xen or KVM guest by the
    paravirtualization system

This happens infrequently enough for it not to be a problem most of the
time, but when it did happen it resulted in an unexpected floating point
error.  So, make sure to only call log() on positive numbers :-}