Add echo cancellation state

Include speex echo cancellation state and use Mumble-plugin's default
values for audio processing queue size.

Cancellation is not yet used for anything.
Echo cancellation: calculate transformed PCM data

Calculate echo-cancelled audio data from buffered input audio (mic) and
buffered output audio (speakers). Input audio buffers are hidden inside
UserAudioState objects. MumblePlugin knows which of those belongs to
each user, and it knows our own user-ID.

So we extract our own user-ID from MumblePlugin and then use that to get
the correct UserAudioState. To make this process simple, we add a
MumbleUser* pointer to AudioProcessor class, and assign the value when
it's available.

The new audio data is not yet used for anything.
Add some echo-cancellation debugs

We really want to see how and when the echo-cancellation code is used.
Exchange output data buffer with echo-cleaned data

If this works, it's going to be very clean indeed.
Un-constify SoundBuffer iterator

When doing echo-cancellation, the last step after calculating the
"clean" waveform is to replace the outgoing audio with the new data.

This naturally means that the outgoing audio buffer needs to be
modified. Remove the 'const' specifier from iterated SoundBuffer frames,
and reflect the change in the used vector-iterator.

After this modification, it is possible to use vector::swap() on the
outgoing audio buffers.
Sanity checks for echo-cancellation

Only try to run _echo_cancellation() when there is source buffer to work
with. And make sure that SpeexEchoState is set back to NULL when it's
destroyed.
Remove spewy debugs
Make echo-cancellation a separate method

Processing local input audio is different from general (network) input.
In order to use/test/dry-run echo cancellation from anywhere in the
audio path, make the cancellation routine its own method.

Re-constify the PCM frame iterator, now that those frames are no longer
touched.
Store audio frames sent to the Audio API

Echo cancellation needs the audio signal played through the loudspeakers that
should be removed from the microphone signal. Keep the frames stored so they
can be used.
Simplify echo state initialization

Do not unnecessarily use the multi channel init method. Reduce the filter
length to 250 ms, speex documentation suggests 100-500 ms.
Make DoEchoCancellation a frame processor

Make DoEchoCancellation work on a frame, so it can be called in the output
audio processing loop. Mix the played frames together and use it as the
"loudspeaker" signal.

TODO: Mixing is done by simple addition; do we need to care about clipping?
Also, should we ensure, that the playedFrames deques stay relatively small?
Drop now-unused "me" member

After changing the DoEchoCancellation, the "me" member is no longer needed.
Initialize speexEcho to NULL

Avoid crash during initialization by initializing speexEcho member.
Merge remote-tracking branch 'inzanity/wip/echo-cancellation' into admino_incoming
MumblePlugin: Add echo cancellation as a option in the UI wizard. So users can toggle it off it they are using headphones. Does not seem to make the sound quality worse even if you are using headphones so should be safe in any case.