surface: Deleted duplicate ammo member variable of Launcher.

The super class ArmBase already had that variable.  The variable name is
overridden (hidden) so apparently it works, but it would cause problems
when it comes to serialization.
surface: Change the way to store script controlled values for Aerial.

In aerialLanding.nut, we have been used a global table with Entity IDs
as indices to store script relevant parameters for each object.
It has been worked, but has a problem that garbage entries will remain
in the table after deleting an associated object.  Adding delete hook to
clear the table would be a way, but we'd like to take more direct solution;
Aerial instance has an arbitrary Squirrel object as its parameter.
This method is proven to work in HellfireProc().
surface: Revive means to reload aerialLanding logic on the fly.

Before aerialLanding.nut was renamed from aerial.nut, we had been able
to reload the script by "aerial" console command while the game is running.
This functionality is disabled since rename, but now available again.
Make EntityRegister be capable of handling initialization order.

Now the extension writers do not need to worry about EntityRegister's
execution order.
Make some comments Doxygen-formatted in Entity.h.
surface: Fix Airport's bbody behaves strangely by non-zero mass.

We should have pass 0 as mass parameter to btRigidBody constructor.

Also got rid of motion state, which is not necessary for static object.
Add performance measurement project to profile hot paths.
gltestdll: Fix Island3 has been taking too much time to render.

The cause of the slowdown is that texture loading and model loading
have been failed every frame.  We fixed the paths to point to right ones
in model directory.

There still seems other problems in rendering.  For example, no lights
are apparent inside Island3 and grass texture seems missing.
Fix an outdated function in common.nut.
Rename popup.h to PopupMenu.h for better indication of defined class

I know there are a lot of misnomers left, but it's a good starting point.
Add PopupMenu-forward.h, a forward declaration header

Also added reference to glw header files to VC2012's project file.
Add mechanism to load popup menu items from Squirrel scripts to Entity

Each time the player clicks right mouse button on the screen,
Entity::popupMenu() tries to load a list of popup menu items from a
executed result of a Squirrel function.  This way, we can fully customize
the contents of the menu without recompiling.  In addition, we have
opportunity to dynamically tweak the menu items.

As a demonstration, Sceptor utilizes this mechanism.

The overhead of executing scripted function is negligible, because it's so
rare that the method is invoked.
Make CoordSys aware of compare operator in Squirrel scripts

The comparison operator metamethods do not affect equality operators
(==,!=), so this change won't make equality operators return true when
applied to the same CoordSys object returned from multiple sources
(even the expresson "player.cs==player.cs" return false).  This problem
should be addressed in some time.

Also added "id" read-only property to CoordSys class in Squirrel script.
Make Player::fov parameter accessible from Squirrel scripts
Brush up Player's Squirrel parameter accessors

* Convert strcmp() to scstrcmp() for interpreting parameter string for
  Unicode portability.
* Make sq_throwerror strings be more descriptive about the error type.
* Fix some return statements in sq_get() to return 0 instead of 1.
* Fix some comments' grammer.
Add mechanism to run cockpitView Squirrel script handler

This mechanism follows popupMenu's idea.  The Squirrel callback function
returns a table containing members named "pos" and "rot", which indicate
desired position and rotation of the camera, respectively.

Just like popupMenu, Sceptor demonstrates this change.
surface: Avoid crash on drawing cockpit HUD for Aerial in space

We haven't considered about displaying HUD in vacuum.  Probably
real avionics engineers haven't, too.  If the air pressure is zero,
we cannot obtain height value from taking log of it.
Add sqserial_findobj() to prevent duplicate push to Squirrel VM

Previously, we have been pushing Serializable objects without concern
about whether the object is already been instantiated in the VM,
and it has been working mostly fine.  Recently we noticed this
mechanism's shortcomings as we add various scripts.  For instance,
If we evaluate "player.cs==player.cs", it returns false.
So we decided to insert a table to prevent duplicate instances for
actually the same object in the game to be pushed to Squirrel VM.

The table has Serializable IDs as keys and instances defined in
Squirrel as values.  If we were to push a Serializable object,
its ID is first searched in the table to find if an instance of
the object is already present in the VM.  If so, we can push a
reference to the already present one instead of creating new one.

We should remove deleted object entries in the table with the
WeakPtr's release event.
Fix Sceptor.nut to adapt previous commit
Prevent id leak in Squirrel VM object table with CoordSys

A new smart-pointer like, WeakPtr-derived class is introduced named
SqSerialPtr, in order to delete slot of the object table whose associated
object is actually destroyed.
When the actual object is being destroyed, that event triggers unlink()
method of SqSerialPtr, which in turn delete the slot for itself.