Fix collision bug causing teleportation.

Things are still sloppy while I try new ideas. This bug was occurring
because my collision changes made it so that velocities based on
collision weren't set until after all directions had been checked. This
doesn't work because the collision for y-directions depends on what
happened in x-directions.

My solution was to split the collision checking into two functions. Each
returns a TileCollisionInfo but with only half of the info checked.
These objects are then combined after all directions are checked. This
is a little confusing because you only have half of the collision info
at some point, but it LOOKS like you have all of it. I'd like to clean
this up if possible, or at least make it really hard to cause damage
with this.

I think next up before any more bug squashing is some cleanup. I have a
lot to delete.

Remaining known bugs:
- BlasterShot shows one too many frames before it dies
- Collision detection doesn't exit early after finding the closest
colliding tile. This is easily fixable by refactoring and returning from
the inner function.
- Constant xVel is no longer maintained while on the pogo stick. This
bug was introduced a few commits ago and I just noticed. This started
happening when I turned on drag. I think turning it off while on pogo
will work fine for this.