Expand upon collision to fix bugs.

This is the first in a series of commits to fix the problems I'm having
with collision. The problems:

1) A sprite can "teleport" around an obstacle by moving a unit of
distance longer than the obstacle. Example: obstacle is 32px wide and
sprite's velocity is 40. The sprite could skip the obstacle completely.
This doesn't currently happen but I wanted to fix it from being
possible.

2) A sprite can spawn inside an obstacle and keep moving as if it
weren't there. This does happen with BlasterShots if Keen is close
enough to an obstacle and shoots in its direction.

Both issues are fixed by comparing the obstacle against the sprite's
current and desired position. Specifically, it checks if the obstacle is
in between the sprite's current and desired position. This was a simple
fix.

3) Edge case: A sprite can spawn inside an obstacle with the side
opposite the direction of movement inside the obstacle. My fix mentioned
above won't fix this, but this will:
before.left < obstacle.right && obstacle.right < after.right

It's just a matter of working it in to my code well.

I also reversed the logic of my collision code to check specific
collision cases and return true, rather than checking that collision
does NOT exist and returning false. I think this is more intuitive and
easier to extend with edge cases.

Currently my fix has only been written for right collision. I need to
add this to the other sides and clean up the code.