internal onComplete fix

onComplete is now _onPlayComplete, and allows for the callback to be
undefined. _onPlayComplete moved to AbstractHint