Refactor current generation

The current generation has been reworked to fit in with the new
schematics where patches can take one of several states.
Sketch of reasonable LOD cascade

A small sketch composed from Bing Maps imagery showing at which steps
different LODs (as configured in main.c) set in.
Coordinate refactor and patch_in_range fix

A bulk of code has been refactored so that now only actually useful
coordinates (encapsulated in struct PatchPosition) are passed around,
whereas before, the useful coordinates have pointlessly been converted
back and forth to the useless, "global" coordinate scheme when passing
them through functions.

The new, sensible coordinate scheme now integrates consistently with
the mechanism to find adjacent patches for auxiliary generation.

Additionally, a bug with patch_in_range was fixed. The interpolation
function required three planes corresponding to the lower ends of a
triangle. When patch_in_range wanted to check the distance to a point
which coincided with the subdivision grid in the branch for subdivision
finer than tesselation, it would pass three planes which all went
through that single point.

There are multiple solutions to that:

(a) Let patch_in_range check whether we actually need any interpolation
and take another path if not

(b) Make sure patch_in_range accounts for those cases where the planes
collapse into a single point and forcefully separate them, to the effect
that they can be passed to the interpolation function

(c) Handle the collapsed planes directly in the interpolation function

The last option was chosen because we prefer not to add another access
to the patch's position data in addition to interpolate_tesselation
(ruling out option (a)) and option (b) would have required additional
logic for choosing which plane(s) to spread out.