intersperse updates and frames more precisely

For https://github.com/PistonDevelopers/piston/issues/522

Please inspect closely; I changed some subtle things, like when we check time and where variables are set, so I may have had some unintended side effects.
Is there a reason we can't have a simple if statement?

```Rust
if next_frame > current_time {
    sleep( (next_frame - current_time) / 1_000_000 / 2 );
}
```