libtime: Implement Add and Sub for Timespec.
auto merge of #16573 : ruud-v-a/rust/timespec-arithmetic, r=alexcrichton

This implements `Add` and `Sub` for `Timespec`, which enables `Timespec` to be used as a time span. For example:

```rust
let begin = get_time();
// Do some stuff.
let end = get_time();
let delta = end - begin;
println!("Doing stuff took {}.{:09d} seconds.", delta.sec, delta.nsec);
```
This resolves one of the points mentioned in #2153.