Add missing forward declaration in Message.h

Some sources cannot be compiled without the forward declaration
of struct Message.
surface: Add ifdef guard to SurfaceCS.h

Also added Doxygen comments to the header and corresponding source.
Re-add header files to VC2012 project file

The header file entries had been removed from the project for
some time, probably because of an accident.  I'm having a hard time
opening the header files from Visual Studio IDE, so they are added
again.
surface: Add GetCoverPointsCommand interpreter for gundam mod

We don't have any Entity that make use of GetCoverPointsMessage,
which in turn uses GetCoverPointsCommand, but it's used in
Gundam mod.  It provide list of cover points where mobile suits
can hide and shoot from behind.  The Airport in demo7.nut
demonstrates this new mechanism.

Previously, cover point querying message is processed by WarField,
but now we can process the equivalent EntityCommand in per-Entity
basis.
Re-add private header files to VC2012 project file

This is the same issue as 56f2e01 (I should have done this there).
We again add private headers to project file for better navigation.
audio: Import sound mixing library from clib

We want to convert the library to C++ and also customize it for our
project's need, so we copied it instead of tweaking existing library.
Another important reason is that exporting functions as DLL symbols
in a static library is counter-intuitive in Visual C++.  It's not
impossible, but we need to specify all functions to be exported in
a .def file.  If it comes to class methods, we need to write down
decorated names.

The sound mixing is performed in a dedicated thread so that the main
thread won't block the sound and vice versa.

I think there are bugs regarding positioning sound source in 3-D
space, which should be fixed with extensive tests.

We should really use common libraries such as OpenAL or DirectSound
for stability and portablility, but implementing one by ourselves
would be fun.
surface: Add Tank gun shoot sound for demonstrating sound engine

The shoot sound is recorded in real tactical exercise, so it's
copyright-clean.
Erased unnecessary header includes from Sceptor.h and Sceptor.cpp

The long history of Sceptor make it having many include files, including
not really necessary ones.
Add Sceptor gun sound

This is another demonstration of sound engine besides surface module's
Tank.

The sound is recorded in firing exercise, so it's copyright-clean.
audio: Add namespace audio to separate common names in sound engine

The names can collide with those in clib.  Also they are so common
that collision could happen with other modules or libraries.
audio: Update listener's position and rotation every frame

The position and rotation is acquired from current player.

Also encapsulated listener_pos and listener_xhat inside the library
to protect them from simultaneous access from distinct threads.
They are made Vec3d for easier access.
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.
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.
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.
audio: Add volume and pitch change API to audio interface

Using added functions volumesound3d() and pitchsound3d(), you can change
volume and pitch of already running sound source, respectively,
just like movesound3d() for position.
You can make looping sound change attributes after it is initiated,
so convincing effects can be achieved such as varying engine sound
depending on output power.
Remove Win32 from .gitignore file

This is because libogg and libvorbis use the directory name to store
project files.
audio: Import libogg, the container format library for Vorbis

This commit is the first half of Ogg Vorbis support.

The ogg library (libogg) apparently managed with Subversion, but
there's a Git mirror at git://git.xiph.org/mirrors/ogg.git, so we
can subtree merge the library (as we did with clib and cpplib).
I've actually tried that and it worked without a problem, but I
don't think it's worth keeping all the history information of the
library inside our project.  The library is fairly stable and we
can expect that we won't need to frequently update the library.
We just copy the latest source tree under libogg directory,
just like zlib, jpeg, lpng and squirrel3.
audio: Import libvorbis, the lossy audio format library

This commit is the latter half of Ogg Vorbis support.

Now that the container format library is imported, we can import
the library for the content.  It's not coming with history for the
same reason as libogg.
audio: Adapt libogg, libvorbis and libvorbisfile to VC2012 solution