pointgalaxy: Experiment with point sprite rendering for galaxy
Fix embarrassing spelling in draw_gs
pointgalaxy: Give up using point sprites; use billboards instead

The point sprites feature of OpenGL is too device-dependent to use.
We fell back to good old billboards with random rotation to render
a blob in the Galaxy.
pointgalaxy: Cache blobs to enhance rendering speed
pointgalaxy: Import an artificial galaxy map image

We cannot see Milky Way galaxy from outside, so it's all art.
pointgalaxy: Fix draw_gs to load from galaxy.png
pointgalaxy: Fix possible zero division in galaxy rendering
pointgalaxy: Tweak star density calculation for the galaxy

Also deleted many old codes whose purpose is unclear now.

Also replaced max and min macros with STL template functions in
astrodraw.cpp.
pointgalaxy: Change add blend to alpha blend and sort blobs

Additive blending does not require z-order sorting of objects,
but alpha blending do.  It's costly to sort tens of thousands of
objects for every frame, so we remember the last sorted order as
long as we do not move much that ordering may change.
pointgalaxy: Move and rename galaxy field variables to Warpable.cpp

The galaxy field feature has been only relevant to star background
rendering, but it can be used by StarEnum also.  So we need to include
it into some source that will be compiled in the dedicated server.
Astrodraw.cpp is not the case.
pointgalaxy: Use galaxy field to obtain star density for StarEnum

We had been using hard-coded elliptical density distribution to
compute star count in a sector, but it's now unrealistic since
we can literally travel across the galaxy.

Now we should think about a way to limit generation of countless
number of star names which will be stack up in memory.
pointgalaxy: Fix density of stars to gradually fade into empty

The galaxy has most stars along galactic plane.  As the viewpoint
move away from galactic plane, star density drops.
pointgalaxy: Make star density realistic as a galaxy

The estimated density is mostly average density of the galaxy.
The real galaxy should be non-uniformly distributed.
Specifically, galactic core should be more crowded than Sol's
neighborhood.

Also changed StarEnum's random sequence initialization seed to
CRC32 checksum of sector indices for fast and non-repeated
sequence.
glwindow: Close Windows GDI handles for fonts on exit

I think the handles are automatically deleted by OS on process
termination, but I have been experiencing strange effect that
the OS's fonts become weird, so it may help.

For the issue's details, see commit 2f7a7cf.

I also tried FreeType library and its OpenGL adapter, freetype-gl,
in order to replace Windows GDI, but it turned out that the libraries
need so much effort to optimize to catch up Windows GDI's performance.
Optimize location window by omit drawing unvisible items

The warp destination window (and teleport window) can be so slow
when the listed items are so many.  We can omit drawing items
whose position is out of frame.
Further improve location window's performance

Reduces count of filter methods calls to minimum required.
Tweak galaxy's blob sprite in the hope of looking smoother

Previous image had gradually darkening border which make each blob
sprite looks separated.  The image's RGB channels are altered with
flat perlin noise to make a bunch of sprites looks one piece.
Silence warnings in astrodraw.cpp
pointgalaxy: Cache pre-rendered cube image to improve performance

The number of blobs to draw the galaxy is so high that it could reach
tens of thousands.  Drawing them every frame is somewhat inefficient.
We can store rendered image to textures using framebuffer objects in
modern OpenGL implementations.  We pre-render the blobs graphics
into cube textures and draw them as a cube background to greatly
improve performance.

When the viewpoint moves far enough that cached textures do not match
the real scenery, the textures are refreshed, after waiting 2 seconds
for the viewport settles.

There's an issue that cached textures and direct rendering looks a
bit different due to blob rotation depending on viewpoint rotation.
pointgalaxy: Optimize cube background repaint distance

The cube background had checked integral indices vector in the galaxy
volume to see if the viewpoint had moved significantly, but it's not
quite optimal, because it could unnecessarily frequently repaint the
background when you are very close to the integral border.

Now it checks real number distance to determine to repaint only
if really the background has significantly moved.