do not play audio if time is beyond its duration

Previously, `start()` was called even if the audio was already complete and negative duration was passed to WebAudio. This seems like undocumented behavior - Chrome, for example, played the sound from beginning in this case. This is now fixed.