Make SqInitProcess loadable from arbitrary sources in C++03-way.

The initialization script provider is virtualized to an abstract class
which can be inherited by the user of this API.  This functionality
introduces a slight overhead to construct a intermediate class object
on the stack, but the process should be only invoked at the startup, which
means customizability precedes execution speed.
After all, evaluating a Squirrel script and retrieving values from
the affected VM is far heavier task than the overhead.

If we could utilize C++11 features, we could use std::function instead
of an abstract base class.  In this way, we could use regular function,
lambda expression or functionoid for the same API.  Unluckily, C++11 is not
yet sufficiently supported by compilers out there.  Also we want to
add description() method to get a string about the source provider
on exception in SqInit(), which cannot be achieved in a intuitive way
with std::function.
surface: Add means to assign a hitbox list to a SurfaceBuilding.

Now SurfaceBuiding has a hit shape in the Bullet dynamics world.
It's marked as static (mass == 0).
The shape can be defined in a generating script per instance.