Playback with negative speed

Passing negative speed to AudioPlayer caused ArrayIndexOutOfBoundsException when current position was ahead of audio beginning. This patch adds looping for playing both forwards and backwards.