further code cleaning/re-shuffling around collision (to be closer from a SAT implementation philosophy)

- moved the `collideWithRectangle` out of the me.Rect code (this will
also make the default object a bit lighter, as me.Rect objet are used a
bit everywhere where this function is not used)
- create reusable response object when performing collision detection
(lowering GC)