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
Seeing "nanos" just looks weird to me for some reason. I feel like everyone always uses "nsec" instead. This may be the most trivial of things to care about, but it would just look better to me as "nsecs" here. Feel free to ignore this :)