surface: Make bullets hit the ground.
surface: Make Tank to shoot enemies and shot Tank takes damage.

Also revived death effects for Tank.
surface: Add customizable max health value to Tank init script.
surface: Make Tank steer towards enemy if not controlled by a Player.

The sample mission demo7.nut now demonstrates this by constantly supplying
Tanks if ones get killed.
The demonstation seems to occasionally raise exceptions regarding
std::lists.
It should have something to do with self deletion of Tanks in
takedamage().
surface: Increased vertical accuracy of Tank's main gun.

We don't need to consider gravity when aiming with tank gun, because the
target object is likely on the ground.  We won't shoot at a target in the
air.

Also increased demonstration area and Tank count in demo7.nut.
Tank's enemy sense range is increased to make it fun.
surface: Make SurfaceEntity's race neutral; no one will try to attack it.
Colored neutral Entity with light gray in GLWentlist.
surface: Enhanced performance of TIN trace hit check with grid algorithm.

Now we can detect ray trace hit with the terrain precisely without too
much calculation.  The drawback is that we need to cache the grid at
TIN loading.
Modified F15's generation script a bit in demo7.nut.
Make Bullet generate hit effect at precise hit position.

Tank class in surface module applies this change to its main gun, which
makes notable difference since Tank gun's muzzle velocity is very high.
surface: Cleaned up Tank.cpp's include directives and unused codes.
surface: Prevent invalid pointer access by Tank not in a SurfaceCS.

Previously, Tank assumes it's in a SurfaceCS.  It's almost always correct,
but we should prevent crashes when it happen to be created in space.
surface: Make Tanks to generate on the ground in demo7.nut.

We no longer need to create Tanks in the air since the new getHeight()
algorithm make Tanks pop on surface no matter how far they are
below surface, which is advantage of the custom algorithm over
Bullet dynamics engine's btHeightfieldTerrainShape.
surface: Tank shoots only if it has clear line of sight to the target.

Deterimining if we have a clear line of sight is done by using traceHit().
Tracing ray for long range is costly process, so we do it only once
in a while to suppress CPU load.  This check interval is randomized among
Tank instances to prevent concentration of load on a specific period.

We also fixed TIN::traceHit() accessing out of range of the grid.
surface: Improved performace when traceHitting long rays with TIN.

Optimized hit check triangle culling by ignoring grid cells which does
not hit with the ray.
surface: Stop Tanks falling down slopes.

First, Tank's lateral movements (velocity component perpendicular to
wheels or caterpillar's direction) are cancelled.
Second, friction is applied when a Tank is not moving.
Friction is diffefent from Bullet dynamics engine's linear velocity
damping factor.  The damping will never make it stationary, while
the friction can completely stop the vehicle if the slope is gentle
enough.
surface: Cached TIN's grid to a file to enhance speed at startup.

It takes fair amount of time to calculate triangle grid.
Caching it to a file will reduce time to start game in the second time
or later.
Add surface module's resources to rc.zip make dependencies.
surface: Add APFSDS projectile as Tank's main gun ammo.
surface: Add M3Truck class.

It can run just like Tank with a little bit faster speed, but its
armaments are very weak.
Currently, it will enclose to enemy blindly, which makes it a good
prey for Tanks, but it's good starting point for debugging.

An intermediate abstract class LandVehicle is added in this commit
to share common behavior among Tank and M3Truck.