surface: Make HellfireLauncher reflect remaining missiles in graphics.

Also moved definition of Hellfire ammunition count from Apache's member
to HellfireLauncher's member.
surface: Make HydraRocketLauncher have ammunition count on its own.

Just like HellfireLauncher.
In order to achieve similar result to HellfireLauncher, we made
HydraRocketLauncher derive a common base class with  HellfireLauncher.
surface: Make Apache's chaingun auto-targeting works.

Just gets back to gltest project's way of weapon indexing to revive
auto-targeting codes when the player is controlling.
surface: Add lockon target marker to Apache's HUD.

Codes copied from F15::drawHUD().
It's really a HMD.
surface: Backported fix in Apache::drawHUD() to F15 in the previous commit.

The function gldPutStrokeString() has been disabled, so passing a string
to it won't do anything.
We'd better use gldprintf(), which will format the string for us.
Remove EXPORT macro from WeakPtr's declaration.

WeakPtr is a class template with all member functions defined as inlines,
so we should not add EXPORT macro to its declaration, or the extension
modules end up with linker errors in Visual C++ compiler.
I didn't investigate the issue on Linux gcc, but I suspect gcc is OK in
either way.
Revived equality operators for WeakPtr.

They are disabled because they tend to mess up with complex conditional
statements due to template type inference, but adjusting the logic a bit
made them compile fine in the whole project.

Defining those operators explicitly hopefully avoids unnecessary WeakPtr
object creation in the comparison expression.

To be honest, there's no intrinsic reason to fix this issue now.
The practical reason is that Observer.h is modified for another issue,
which make the whole project recompile, which in turn makes me to think
that it's a good timing to do this.
surface: Make F15's cockpitView() follow missile on seatid 4.
surface: Make Apache::cockpitView() follow missiles just like F15.
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.