Updated collision detection system

It still uses rectangles to detect things, but that will be changed
soon. I updated the system so it makes a little more sense in regards to
what is actually doing the collision checking. (States are now the ones
primarily responsible for collision checking and handling. Blocks do
less.)