Moved SqCallbackProcess from surface to main executable.

The process class is worth embedding into core library that it could
be used for anything.
surface: Separated Launcher-derived classes into header and sources.

Just reorganizing code positions to be more balanced.
It's a preparation for the next commit.
surface: Add Sidewinder class to be shot from F15.

The guidance algorithm for Sidewinder is a dead copy of Hellfire
missile.  It should be optimized as an air-to-air combat missile and
should behave like the snake of the name origin.

Also made F15's weapon system ArmBase oriented, just like Apache.
surface: Add A10 Thunderbolt II attack aircraft.

It's almost just a copy of F15 with altered model for the time being.
surface: Add cockpit model to A10.

Also adjusted cockpit position of A10 to match the model.
Make it valid to get null reference in Entity::sq_refobj().
surface: Make A10 capable of carrying various armaments.

They are currently HydraRocketLauncher, HellfireLauncher and
SidewinderLauncher.  The fire event handler in Squirrel script is
unified to handle all 3 types in a function.
Show some informative message when Entity::sqGet() fails.

Because I had a little hard time to figure out what's going on a Squirrel
script which contained a bug.
surface: Avoid occasional zerodiv in TIN::traceHit().

This problem occurs when the ray is parallel to X or Y axis
(X or Z axis in WarSpace's convention).  It's so rare that it practically
only raises just after initialization, but it doesn't mean we can leave it
non-fixed.
Made ExplosiveBullet be able to get created from Squirrel scripts.
surface: Experimentally generated gun bullets from Squirrel scripts for A-10.

In this way, we have almost all the flexibility of scripts for fixed
guns too.  The problem is that we should advance the physical simulation
time in subframe precision to make it realistic if the gun's rate of fire
is relatively high, which is not achieved in this commit without help of
native codes.
Add update method to Entity class handle in Squirrel scripts.
surface: Make A10's gun bullets advance in subframe precision.

The A10's main gun, Avenger's rate of fire is so high that we'd need
subframe simulation steps to divide individual bullets, especially in
low frame rate.

It's made thanks to the previous commit that made changes to core
executable.
Add RandomSequencePtr class accessible through CoordSys from Squirrel.

The class is merely a pointer to RandomSequence object.  It's necessary
to be a pointer because pseudo random number query is mutable operation
which should affect internal state vector of the RandomSequence object.

RandomSequence is member of WarField, not really a member of CoordSys,
but it's the same thing from Squirrel script's point of view.

There's a known vulnerability in this scheme that accessing freed memory
is possible through holding RandomSequencePtr object after its containing
object (WarField) is destroyed.  This case should be extremely rare but
certainly possible.  We don't take care of this issue right now, but
adding weak pointer scheme or something is necessary to work around
this correctly.
Make Vec3d's elements accessible through indexing in Squirrel scripts.

It means you can write like vec[0] to access the first element of a
vector.  This simple syntax have been not supported because you can
write basic linear algebra without it.  But now that we are moving much
logic to scripts, we'd like to use the syntax.

The syntax is also free from 'updating temporary object' pitfall by
compound assignment operators, such as +=, -= and *=.
surface: Add random factors to A10's gun fire.
Add splash (area) damage to ExplosiveBullet.

The splash damage decays proportional to distance from epicenter.
surface: Add splash damage radius to explosive rounds.