Store the path callback closure as a pointer

This means the Path struct no longer requires a lifetime parameter, but we have
to dispose of the memory occupied by the callback manually.
Add an A* path method that returns iterator

tcod's `walk` function is pretty much the textbook definition of an iterator. So
this adds the `walk` and `walk_recalculate` methods to AStarPath that return an
iterator which consumes the path.

For some reason, this didn't compile when the path struct required an explicit
lifetime (due to storing the closure). So the move to storing the raw pointer
in the previous commit was crucial for this.

I'm not happy with that though (would like to minimise the amount of unsafe code
to a minimum, plus I don't fully understand why the former wasn't possible which
makes me wonder that I'm missing something and this code could blow up) so as
soon as that gets cleared up, we'll move back to storing the closure.