Refactor Character:update().

This is toward cleaner movement code.
Clean up character turning code.

This decouples character decisions to grid points, getting rid of some messy
noise in how those decisions are made.