Yet more progress

Seems a large amount of the issues were being caused by some rouge collision detection in Player::move(DynamicBlock*), which is now gone. There is still the occasional glitch, but it seems we're almost there.