audio: Make playSound() be accessible from Squirrel scripts
audio: Revise inheritance relationships of sound source types

Non-3D and 3D sound sources share many members, so they should
inherit from the common base structure.
audio: Fix pitch calculation in playSound()

Sound sources can have various sampling rates.  The sound mixing
engine have a fixed sampling rate.  We must resample the sources
to match ours.  We just pick nearest neighbor of desired sample
instead of using sophisticated resampling algorithms.

In this process, the input pitch value's definition is changed.
The value becomes just a single float, indicating playback speed
factor.  The value is recalculated inside the engine to enhance
performance in playback sequence.

Also, the logic is shared among non-3D and 3D sound sources to
reduce code size and bug opportunity.
audio: Make playSound3d() be accessible from Squirrel scripts
audio: Move private structures definitions to source from header

It had been making no sense to have a header to define these structs.
surface: Add flying sound to F15 and A10

The sound source is the same as Sceptor right now.

It's interesting that we can hear aliasing artifacts when the airplane
gets higher speed.  We could fix it by interpolating sub-samples like
OpenGL's minification filter or mip mapping.
audio: Add isEndSound3D() to query if a played sound has finished

The querying interface intentionally does not use a critical section to
serialize access to the object, because it could block the main thread.
audio: Make isEndSound3D() accessible from Squirrel scripts
surface: Add A10's gunshot sound

Because the firing rate of A10's GAU-8 Avenger is very high, playing
the sound for every round easily clutters the sound mixer and
overflow PCM buffer's value range.  We check if the previously played
gunshot sound is finished before playing next one.