Add brand new Mesh class, which has some compatibility to suf_t in clib.

The clib library is fairly mature and stable, which makes me don't feel
like touching it.  The suf_t aspect of the library is used by other
applications, so we cannot just extend it without accepting risk of
compatibility failure.  It's also written in plain C, which renders
it very hard to integrate to a well object-oriented C++ application
or extend like Model and Motion.

So we decided to make a branch to alter suf_t with brand new class.
Because the library has much of arcane techniques that should take
time to port, we should start off with merely a dead copy of suf_t
and gradually make it objective.

I have tested that the new classes, Mesh and MeshTex, work with
textures and shadow mapping in VC2012 build.
Mesh: cleaned up old codes, specifically get rid of macro constants.
Mesh: Add shininess parameter support.

This addition breaks binary compatibility to suf_t, but it's no longer
needed.
Demonstrated specular model lighting with A10 and F15 in surface MOD.
Mesh: Give Polygon and UVPolygon's vertex types better names.

Previously Polygon's position and normal vectors of a vertex is
expressed as arrays, which are the worst option from a perspective of
readability.
Mesh: Renamed Mesh::ElemType enumeration constants to more intuitive ones.

Now we have gotten rid of all names containing suf from Mesh
class library.
Mesh: Make use of VBO (Vertex Buffer Objects) to enhance performance.

It's expected to be effective against complex objects with uniform material.
We don't have many of such kind of models, but the effect is valuable
if shadow mapping is enabled, because shadow mapping renders the scene
multiple times in a frame.

From this commit later on, Mesh class need to be newed instead of malloc'ed.
This is because a STL container is added to the class.  But it won't be a
problem if the user is object oriented.
Mesh: Fixed normalShadowmap.fs's compile error in GeForce cards.

Radeon HD 6870 permits vectors to compare to 0 (although the result is
unclear), while GeForce 650M fails to compile the source.
surface: Refactored WarMap's traceHit method interface.

It used to be similar to Entity::traceHit(), but I feel it's better
to write it in more object oriented manner.  Namely, input values
and output values are structurized to be less cluttering and
more extensive.  This is effective for traceHit() because it tend
to have many arguments for both inputs and outputs.
surface: Make Aerial AI avoid crashing on ground (SurfaceCS).

It detects the ground terrain by tracing rays and try to avoid it.
It won't always succeed, but it's now way harder to crash when
auto pilot is enabled.

This commit looks chaniging much of Aerial.cpp, but actually most of
the commit is reordering of codes.
Mesh: Fix texture coordinate is inverted in Y direction.