More path finding

This implements all of TCOD's path finding functionality and reorganises things a bit to make more sense.

I'd like to implement a `walk` method on both structs which returns an iterator but I ran into issues with that. We'll have to be content with calling `walk_one_step` for now.