Collision Detection

Final first pass of collision detection and speculative contacts, still
contains issues with jumping and horizontal-right velocity adjustment.