Key control and better collisions

- added input mode (so we can add more later!)
- Added key control

- Collision detection based on speed (even though speed isn't varied)
- Collision based on intent and current position