Fire "finish" event ONCE when audio ends 

Properly check for end of playback with valid buffer available for getDuration(), and ensure "finish" only fires once per play