refactor: Rename tent3d_line_list to Teline3List in the whole solution.

Also enclosed all tent3d.h classes and functions in a namespace like
tefpol.h.
Make Teline3 more object oriented.

We made the struct be virtual and defined various forms of Teline3
by deriving the base class.  Currently only LineTeline3 and
CylinderTeline3 are tried.  CylinderTelin3 is not even tested.
But I'm confident that it'll work on all the variants.

The drawback of new object oriented mechanism is that we cannot know
the size of required buffer to hold all possible forms if we disclose
the base class definition to allow user derived forms.
I'm still thinking about how to deal with this problem.
refactor: Rename tent3d_line_callback to Teline3CallbackData.

Also made it an alias to Teline3ConstructInfo instead of duplicate
definition which partially share member variable structure with Teline3.
Previous way have been compiled fine with C compiler, but it's
considered bad practice in C++ culture to define duplicate structures.
We'd use type rename or inheritance to avoid it from occurring.
Add placement new operator with Teline3List as second argument.

This way the user can define his own class deriving Teline3 to implement
custom update() and draw().
surface: Use Teline3List's placement new to implement smoke effects.

The A-10's gun fire smoke is blown away by air as the aircraft travels
through the medium.  To simulate this situation, we implement update()
to linearly damp velocity of generated smokes.

The implementation should look unfamiliar to regular C++ programmers,
because it make use of placement new syntax to reduce heap memory
allocation.  I'm still thinking if there's some better workaround to
achieve runtime performance and readability.
Add some Doxygen comments for Temporary Entities.
Add some Doxygen comments for effects.h and effects.cpp.
Add tent3d_forward.h to decrease dependencies to tent3d.h.
Add some Doxygen comments and removed old codes from teline3d.cpp.
surface: Workaround for the bug Launchers not working since ffadddc.

The commit ffadddc made Entity::sq_pushobj() to use classname() of
the Entity in question, which is not necessarily defined as a symbol in
the root table of Squirrel VM.  That change was necessary to use
functions defined in derived classes, but it broke working Launcher
class branch for aerial force armaments.  Currently, A10 suffers from the
issue that it can only shoot the main gun, i.e. Avenger.

It's a tough job to fundamentally fix the problem, but instead we
patched surface module to get Launcher-derived classes working for
the time being.
Refactor: Fixed indentation in Bullet::bulletHit() for later commits.

It has been out of sync with logical structure which has been changed
since the logic was isolated into a function.
Fix access violation on Entity death by Bullet splash damage.

This bug has been introduced since eb36f60 as well as ExplosiveBullet's
splash damage.
Revived static and expanding disc shape variants for Teline.
Revived sprite shape for Teline3.

demo7.nut demonstrates this with Tank main gun.
Add virtual destructor to Teline3 class.

Currently it does not affect anything, but it's an obligation to provide
a virtual destructor to an abstract class.
Refactor: Rename tent3d_line_drawdata to Teline3DrawData.

It's not very consistent to other data type definition in tent3d
namesapce.

We also proudly put forward declarations of type names into
tent3d_forward.h.
Removed obviously obsolete and unused flags in tent3d.h.
Add ExpandTorusTeline3 class.

It's barely be used, just by Tank's death effects.
Add GlowTeline3 and ExpandGlowTeline3 classes.
Refactor: Finally deleted obsolete commented codes in teline3d.cpp.