SampleUtil Enhancements

Enhancements and extensions of SampleUtil. Some of the new functions are currently not used, but will be when the new SoundSource API follows. I adopted the naming "widen"/"narrow" for the conversion of signals between a different number of channels: mono --"widen"--> stereo <--"narrow"-- multi-channel

Some minor issues are fixed in separate commits.

I've tried with optimize=0 and optimize=0 and cannot get a positive profiling result out of this change.

Setup:
4 decks playing with different tracks
volume all different values
pregain all different values

Play for 1 minute in BASE recording mode.
Play for 1 minute in EXPERIMENT recording mode.

SampleUtil::copy is comparing memcpy versus std::copy.
SampleUtil::applyGain is comparing a for loop versus std::transform.


Compiled with optimize=9 (I had similar results with optimize=0):

Base:
Debug [Main]: Stat("SampleUtil::applyGain","count=51820,sum=1.05646e+07ns,average=203.871ns,min=40ns,max=82519ns,variance=752980ns^2,stddev=867.744ns")
Debug [Main]: Stat("SampleUtil::copy","count=38942,sum=2.09838e+07ns,average=538.846ns,min=99ns,max=84783ns,variance=2.51544e+06ns^2,stddev=1586.01ns")

Experiment:
Debug [Main]: Stat("SampleUtil::applyGain","count=47875,sum=2.4448e+07ns,average=510.663ns,min=41ns,max=74364ns,variance=1.97717e+06ns^2,stddev=1406.12ns")
Debug [Main]: Stat("SampleUtil::copy","count=38300,sum=2.07344e+07ns,average=541.369ns,min=93ns,max=71438ns,variance=2.46602e+06ns^2,stddev=1570.36ns")

Conclusion: 
* std::copy is just as good as memcpy
* std::transform is roughly 2 times slower than a for loop.