Apply collision fixes in all directions.

Happened to discover another bug in the process and fixed in this
commit. The col/row to start searching at didn't work for top/left
collision. It was off by one. It's now fixed.

I feel the need to test this a lot more before I consider it anywhere
near stable. There are still a couple bugs floating around that I need
to fix.