Bug 849713 - Part 1: Add DOM bindings for AudioBufferSourceNode loop attributes; r=roc
Bug 849713 - Part 2: Accept the loop parameters on AudioBufferSourceNodeEngine; r=roc
Bug 849713 - Part 3: Set the loop parameters on AudioBufferSourceNodeEngine if looping is turned on when start() gets called; r=roc
Bug 849713 - Part 4: Refactor the logic for borrowing the output buffer from the input buffer; r=roc
Bug 849713 - Part 5: Implement the looping logic in AudioBufferSourceNodeEngine; r=roc

The logic in this function is mostly around the mLoop variable.  mLoop being
NotLooping means that the playback of this node is never going to loop, in
which case the logic doesn't change compared to the ProduceAudioBlock function
before this patch.

If the loop mode is turned on when start() is called, mLoop will initially be
WillLoop.  In that case, we play back until mLoopEnd, and then we will wrap
around to mLoopStart, set mLoop to be IsLooping, and start playback again.
From that point on, mLoop will always be IsLooping, and we will loop between
mLoopStart and mLoopEnd.  Where possible, we'll just use BorrowFromInputBuffer
to avoid copying the buffer, and if we hit the edges right around the time that
we loop, we copy some frames from the end of the input buffer and some from the
beginning in the memcpy loops at the end of the ProduceAudioBlock function.
Backed out changeset 151b845b0fa9 (bug 849713 part 5) because it has not been reviewed yet!