Further collision revamps

A dynamicBox now returns a detection box, which is passed to the player. If the player is inside this collision box, the player will be moved with the block, but only in a single axis unless the player is perfectly within range (using the same system as collision detection). This doesn't apply if the player is just standing on top, then they just move with the block still.

This box is drawn with some horrible hacky code in main.cpp. It's marked DEBUG in comments.

It isn't perfect, and you can still phase into the platforms on the given layout. Fixes some stuff though I think.