Redo collision detection methods.

I'm currently leaving the old code commented out to reference because
there are still bugs and this old code might help, so it's very messy.

It's also messy because CheckTileCollision is one massive function with
a bunch of duplicate code, but for now this makes the information
passing a lot simpler than before.

There's NO COLLISION INFORMATION IN CLASS MEMBERS anymore! This is
great. As it should be, collision information only exists on a per-loop
basis and is discarded afterward.

Lots of cleanup to come.

Known bug: Player teleports to top of tile while colliding with either
side in midair.