CollapsibleBlock placement logic

This change makes the height matching of newly placed collapsible blocks a bit smarter. Instead of only looking at 4 direct neighbors to determine quadrant height, the new algorithm tries to determine a slope by scanning the surrounding area. If a change in height is detected, the collapsible block surface will have a matching slope, i. e. it tries to create smooth surfaces over larger areas.

Some more tweaks are required to make it work better; an axis lock switch for instance, to make it only smooth a single axis.
Out of curiosity, what exactly does blocksMovement() mean?