audio: Introduce linear interpolation filter to reduce audio artifacts

The functionality can be chosen whether to use at compile time via
macro definition switches in wavemixer.cpp.

The console variables g_interpolate_sound and g_interpolate_sound_3d
are also introduced to enable or disable the functionality at runtime.

The static sounds (which are played back with playSound()) and 3-D
sounds (which are played back with playSound3D()) have separate settings
for interpolation.

Sound sample interpolation requires fair CPU power to achieve, but
modern CPUs will do that without sweat, especially multi-core ones,
which benefit from multi-threading.

It makes noticeable difference in airplane flying sound when the speed
reaches 200 m/s.
audio: Fix addsound() and playSound() to return correct sound IDs

The returned ID (actually, channel number) could be used to manipulate
the sound after it started playing.  The same thing is alread done in
3-D sounds.
audio: Add isEndSound() to query if a played sound has finished

It's the same functionality as isEndSound3D() added at c05e740,
but this time it's for static sounds.

Also quitted exposing internal functions in wavemixer.cpp.
Fix occasional access violations in sqserial_findobj()
audio: Make isEndSound() accessible from Squirrel scripts