Fully accurate Surface Detection

Currently there was a broad system in place, so a villager can determine the surface of its current position - this wasn't accurate at all and gave a lot of problems for a nice movement, especially on corner shaped blocks. This wasn't getting any better with the recent addition of more block shapes, so I had to fix the issue.

To do so I adapted the engine in a way, that each block shape now handles it's own subset of collision geometry tailered to the block type. That way, villagers can now determine the surface under their feet very precisely. Not only does this provide much smoother movement of the villagers and less hassle with adding new block shapes, it also make the movement now correct for every shape in the game AND - as a bonus - it also allows units to take positions in a non-grid-uniform way.

Technically it would be even possible to manually control a unit like one would in a top down RPG and still have perfect alignment - in Exipelago terms, this could allow a future feature, where a player could decide to visit other players islands and explore them in an RPG way just for the sake of discovering it - I guess this could be a quite interesting feature, as long as players are willed to accept "visitors" (that would mean to somehow make their savegames available online) - let's see if that idea is taking shape at some point (definitely not know)

The change is queued for v00.01.52 (surface detection, not visiting foreign islands)