features in the original (convex/concave/convex) being enlarged
in a very large scale and causing issues (IP's within pieces).
This might be reconsidered later. Simplifying with a very small
distance will never be visible in the result,
if it is using round joins. For miter joins they are even more
sensitive to small scale input features, however the result will
look better.
A distance strategy can change behaviour (make larger - set simplify
distance to 0.0 to avoid simplification)
This fixes the parcel issue(s)
This moves responsibility of generation to the calling code, removes it
from the join strategies. It also enables using the end-strategy for the
spikes
there was no segment in between generated, therefore if the side-segments
did not intersect (e.g. donut_diamond in polygon_buffer.cpp unit test),
there was no intersection at all. Now a helper piece is generated and it
will intersect.