Add Duration type to std and use it in Timer methods.

Currently, the Timer methods take an integer number of ms. This is considered a bug because a) types, b) some timers have ns precision.

This plucks the `Duration` type from [rust-chrono](https://github.com/lifthrasiir/rust-chrono), plops it into `std::time`,  and replaces the arguments to `sleep`, `oneshot`, and `periodic` timers with it. It leaves the old methods intact as `sleep_ms`, `oneshot_ms`, and `periodic_ms`, for convenience.

Closes https://github.com/rust-lang/rust/issues/11189.

cc @lifthrasiir @aturon @kballard @alexcrichton
`nseconds()` is definitely too confusing. Looks like nanoseconds. As with `ndays()` my preference is `seconds()`, with a fallback of `num_seconds()`.

I also think this method is confusing. I would actually expect to get the total number of seconds that comprise the duration, not just the seconds left over from subtracting days. I can see the potential desire to have that functionality as well, but it should have a different name, or perhaps even just have one method that returns all 3 components in a tuple.