Sparse collision grids: Part I

I have nothing new to show in terms of screenshots. All the work has been in the back end, trying to reduce the amount of drawing I have to do and trying to make it simpler to do collision detection.

Of course, the reality has been that at least 50% of the time has been spent tracking down a silly bug. The moral of the story: when implementing a sparse collision grid remember that int(x) always rounds towards zero. Why is that a problem? Think negative numbers.