Bugfix/718

Fix for https://github.com/elm-lang/Elm/issues/718.

The solution to the problem was to add to `elm.timer`'s delay by the time difference between elm's current time and the time recorded at the jump destination.

There is a problem with adding more than the time spend paused to elm's timer offset:
```
curr = elm.timer.now();
diff = zero ? 0 : curr - prev; // prev set by last tick
prev = curr;
elm.notify(ticker.id, diff);
```
The `prev` variable holds a time in elm's future! It was set before the `elm.timer` offset was updated. When `curr` is set with `elm.timer.now()`—to be at a jump point's time in the past—it is *before* `prev`.

There is a fix for this, though. We can check for when `prev > curr` and set `diff` to `0` when this happens.

--
To give a more concrete demonstration of what happens, here is an order of operations table:

For reference: Call times are shown as `<1,0>` which means that `Date.now()` will report 1 second, and `elm.timer.now()` will report 0 seconds.

... at some point in the timeline...


Call time | Expression
----------|:-----------
`<30,30>` | `prev = 30`
`<31,31>` | `pause()` (current position := 30)
`<35,35>` | `continue(23)`
`<35,35>` | `elm.timer.addDelay(35 - 31) = 4` (paused time)
`<35,31>` | `elm.timer.addDelay(31 - 23) = 8 + 4 = 12` (scrubbed time)
`<35,23>` | `curr = 23` (inside `tick`'s function)
`<35,23>` | `diff = curr - prev = 23 - 30 = -7` **!!!!**
`<36,24>` | `curr = 24`, `prev = 23`
`<36,24>` | `diff = 1` (everything is back to normal)

This is all to say that I think `tick`'s function needs to know *something* to prevent `diff` from becoming a negative value. I think the least intrusive way is to add an `if (prev > curr)` statement.