Check NaN timing on player/duration

As per #225 (later reverted), but now with:

1. tests
2. checks moved around: checked on Player setters and on timing

An alternative to the `timing.duration` check might be to make it inside `makeTiming`, which is currently the only place timing objects are updated (since they can't be changed in a meaningful way after creation right now).
This should be normalized earlier in the process.