performance improvement

Multipoint.shortest_distance_to was using generators inefficiently

this replaces them with a precalculated list, trading memory efficiency for
speed
optimize Point._setxyz

new function 30% faster and cuts 10% from the time to create a simple point