Engine/Task/Ordered/OrderedTask: Clear taskpoint_start/taskpoint_finish when clearing a task

Fixes trac issue #2947.
MapWindowEvents: check if the projection is valid

Fixes assertion failure when the DrawThread is slow on startup.
OLCTriangle: better approximation of min and max distance

Reduces the number of needed iterations by 40% and memory
consumption by 30% in some cases.
OLCTriangle: use a mixed breadth-first/depth-first search for large trees

This won't affect fast problems but can reduce the memory usage for hard
ones.

Experiments with worst-case flights with many gps fixes revealed a
saving of over 2/3 compared to the old strategy (450mb instead of 1.6gb
for a flight with 4096 points). Flights with less points don't have that
problem, due to a nonlinear dependency to flight size.
OLCTriangle: reduce memory footprint of CandidateSet

Saves about 10% memory...
Android release v6.7_preview11
resource.mk Fix misplaced endif
Geo/GeoClip: use common clipping routine

This code should be merged with RasterCanvas's clipping routine,
but for now, this commit just re-uses the same logic,
which is set up for a minimum number of comparisions.
Screen/Memory/RasterCanvas: don't do redundant clip tests

When we clip against a line, we know that that clipping condition is satisfied,
so only need to clear the clip flag (if we don't move the other dimension), or
recalculate the clip flag along the other dimension (if it has moved).
Geo/GeoClip: don't do redundant clip tests

When we clip against a line, we know that that clipping condition is satisfied,
so only need to recalculate the clip flag along the other dimension (since it may have moved).
Geo/GeoClip.cpp: cache clip status for polygon clipping

Use temporary objects to cache clipping status during polygon clipping,
to avoid performing 4x2 floating point comparisons per vertex.

These are effectively replaced by integer mask checks; but further
optimisation is possible.
build/targets.mk: NEON fpu specified twice.

-mfpu=neon -mfpu=vfpv3-d16 are conflicting.
One or the other, not both, should be specified.
Terrain/RasterRenderer.cpp: avoid branch on positive mag test.

Quicker to just set a bit, than have a branch (from use of std::max).
This means mag is slightly larger than it should be, but well and truly
acceptable given accuracy of the rest of the slope shader.
Screen/Custom/Dither: move to Screen/Memory/
Screen/Dither: include cleanup
Screen/Dither: reuse variable "width_2" once more
Screen/Dither: use std::fill() instead of memset()
Screen/Memory/Canvas: compile with -O3

Fix the HOT_SOURCES variable after Canvas.cpp was moved.
Screen/Dither: add "restrict" to error_dist_buffer pointers
Screen/Dither: eliminate offset from err_dist_l1