Rectangle-rectangle collision, and other collision-related changes

- Fighters now use a ShapeVector to hold size information
- Rectangle-rectangle collision implemented using separating axis
theorem