Use approximate geodesic distance computatiom that crosses through triangles
rather than only along edges. Using only edges would give artifacts already
on a simple grid.
The initial distance computation is about 1.5x slower in my tests. The first
naive implementation was about 8x slower. It was optimized by switching to an
edge based queue, adding early out tests and always propagating using latest
distance estimates. The only remaining big optimization I can think of would
be multithreading, but that's fairly difficult.
The same algorithm should be useful for sculpt mode falloff and instance/hair
distribution as well, so the core math function was added in blenlib.
The algorithm can be further improved for the case where a region is selected
rather than a single vertex. The boundary of the region is not smooth since it
zigzags along the topology, and that leads to non-smooth distances as well.
Less so for geodesic distances but still visible. Some type of blurring of the
boundary before propagation would help, but I consider that outside the scope
of this patch.

