Add crossfade (option) and fix context resume bug
First of all, thanks for a really helpful little bit of code! <3
Regarding this PR: I've been using it to implement audio backend for wasm browser game. The browser does not allow one to play audio without interacting with the window first, which prevented the browser from playing the audio. First two commits add a periodic poll of context.resume() (which is behaving a bit weirdly so has to be wrapped in a timeout) to check whether we have successfully resumed the context and are able to play audio. There is a bit tricky case there which is resolved with the want_to_play flag (see comment).
The latter commits add a crossfade mechanism to the audio. The default behaviour is exactly as before. play(0.1) plays the track on loop and crossfades the last 0.1 seconds. Makes it sound bad in the demo (which is why i didn't add it there), but it helps with less-well-looped pieces of audio.
Finally added a playing() method to check if the audio is currently playing. A useful thing to be able to check; saves keeping track of it in a separate variable.