Taking into account the frame size in more encoder decisions

Stereo mode, stereo width, min bandwidth, VBR damping
Makes surround bandwidth decision based on the number of channels (duh!)
Hides OPUS_FRAMESIZE_VARIABLE from the API until it actually works
stupid uninitialized variable in the mlp training caught by cppcheck
Fixes some minor issues found by scan build
More size-zero VLA fixes and making opus_decode* return BAD_ARG on framesize<0
gcc -pedantic had "comparison of unsigned expression < 0 is always false"
oops, don't need RESTORE_STACK when there's no stack
Fixes an initialization issue in SILK prefill found by Coverity
Making the CELT fixed-point decoder a bit more robust to extreme signals

denormalise_bands() can now produce signals close to the max MDCT amplitude.
Variable frame size fixes (still not exposed in the API)

This fixes an actual error in the downmix (using the float version even
for the int API), as well as a bunch of conversion warnings.
Fixes MSVC conversion warnings
Prevents LFE from busting at really low bitrate
Increase surround allocation offset for smaller frame sizes
Fixes more warnings
Rename preemphasis() to celt_preemphasis() to avoid amrnb symbol clash

http://lists.xiph.org/pipermail/opus/2013-November/002372.html
opus_multistream_packet_validate() now called with the total number of streams

Signed-off-by: Jean-Marc Valin <jmvalin@jmvalin.ca>
Fixes max_redundancy so that hybrid CBR can fill all bytes
Adds packet padding that works for all codes and fixes 40/60 ms CBR.

Padding is now handled by the repacketizer.
Fixes a bug where the encoder was trying to use redundancy in CELT mode

The problem was that forcing CELT-mode for low bitrate CBR was done too late,
after the encoder had decided to use SILK. This was causing redundancy
to be allocated because the encoder didn't realize it was going to keep
using CELT.