surface: Fix typo in comment in Tank.h
surface: Make Tank gun sound update position after shot

The tank gun sound is heavy and long.  The vehicle can move away from
the point it shot the gun, in which case the listener in the vehicle
(or chasing as an external camera) hear the sound source drifts away
from the vehicle.

In reality, the sound source shouldn't move.  This is rough
approximation of the phenomena.  Sound waves reflect about the
surrounding objects, such as ground, wall, other vehicles or
structures.  This multi-pass echoes accumulate together to make
apparently direction-less sound.  Probably we should add a property
like direction-less-ness (or whatever) to 3-D sound sources to
make large sounds feel real.
surface: Remove unnecessary include files in Apache.cpp
surface: Add chaingun shoot sound to Apache
audio: Refine interface to introduce infinitely looping sound

The audio library interface is refined to be more C++-ish.

Looping sound loops forever, so the invoker is responsible of stopping
it when the source of sound is destroyed.  The function stopsound3d()
is added to explicitly stop one.
surface: Add Apache's rotor sound as looping sound
audio: Simplify playWave3D()'s interface

Removed playWave3DPitch() since we can use default parameter in C++.

Also made #ifdef guards do not collide with clib's same header.

Also added some Doxygen comments.