Several Major Changes - Collision, Variable step

- Overhaul collision detection to use Speculative Contacts.
- To help with new collision detection, add new VectorUtilities class
with several useful methods.
- Implement side-specific collision (woo!)
- Change game to variable time-step, and adjust all update methods
accordingly.
- Tweak Gravity/Friction values to adjust for Variable time-step