Collision work

Made it through the worst of getting collision working, yet to do
transforms for map boundaries (next commit), and finally to enforce all
the collision rules (last commit for this job)
Border collisions set up

Next commit will enforce all collision boundaries
Interim push (collisions)

Concept locked down for custom collision system. Need more time to iron
out the details. Next push will have all collisions working as expected.
Second interim commit

Needed logic figured out. The rest is relatively simple implementation
details.
Collision grid complete

Correct transformations applied so that collision grid lines up
correctly. Map boundaries need to be pulled back, and collision
detection must be enforced by neighboring rather than overlap.
Collision system corrected

Found correct collision system for tile-based checking. Still getting
"stuck in corners" effect. Next commit debugs getting stuck, one after
reintroduces collisions besides map boundaries.
Collision system up

Very hacky but collision system works properly. Now there is a need to
clean up the code as much as possible, and separate the level loading
to use the other loadable steps.