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.
surface: Add M3Truck's cockpit model.

Also fixed M3Truck::cockpitView() to show convincing view.
There's an issue that transparent objects become seen through obstacles
when you're in cockpit view.
surface: Refined M3Truck's hitboxes and added detailed model.
surface: Add landOffset parameter to type90.nut, just like m3truck.nut.
surface: Refactored Tank::draw() by erasing commented codes.
surface: Make a difference between tracked and wheeled vehicles.
surface: Make certain steering parameters virtual in LandVehicle.
surface: Add steering wheel motion to M3Truck.