Fix play/pause behavior

This fixes a number of bugs such that:
* We return null for the currentTime while waiting to pause at the API
level (but preserve the time internally for calculating the computed
timing etc.)
* We correctly handle pause() following by play() in quick succession
* We make sure a player's start time is always null while paused