Duration related refactoring changes.

- Fixed Duration's stream insertion operator so that the output string
  does not have trailing zeros after the decimal point.

- Changed Duration to 1) use int64_t to store the value in nanoseconds
  for better precision; 2) use integers in constructors; 3) include
  overloaded multiplication & division operators.

- Try<Duration> Duration::create(double seconds) is added to work with
  a floating-point seconds input.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/11202
Time related refactoring changes.

- Added a Time class as a new abstraction that works with Duration for
  various time related calculations.

- Added a Try<Time> Time::create(double secs) corresponding to the
  Duration::create() API.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/11283
Duration-Time related refactoring changes.

- Changed various old *time* and *duration* related variables from
  "double", "Seconds" type to use "Duration" and "Time" type.

From: Jiang Yan Xu <yan@jxu.me>
Review: https://reviews.apache.org/r/11285