Try to fix flaky timestamp tests (#153)

* Try to fix flaky timestamp tests

There seems to be an underlying Dart issue that causes access and
modification times to files to sometimes be 1 second before the
current time.

Adjust `package:file`'s access and modification time tests to
tolerate this.  Previously they verified that the access and
modification times always were within a 1 second interval, starting
from the current second and ending at the next second.  This change
adjusts the interval to start at the previous second and end at the
current time rounded up to the nearest second.  This means that the
interval will be 1 second if the current time happens to be an exact
second or will be up to 2 seconds otherwise.

With this change, I've run one of the modification time tests in a
continuous loop for 10s (>300K iterations) without failure.

Bonus: Make some additional changes related to time handling:

* Change `ceil()` to be a mathematical ceiling.  Previously if the
  current time happened to be an exact second, `ceil()` would return
  the next second, which is a bit misleading.

* Change `expect(before, isSameOrBefore(timestamp))` to
  `expect(timestamp, isSameOrAfter(before))` since we're verifying
  that the timestamp is correct, not that the `before` reference time
  is.  Otherwise output from a test failure mixes up the notion of
  "Actual" and "Expected" values.

* Update
4 files changed