Use unboxed closures for path finding

This needs a bit of a hackery to cast the closure trait object to C *void
user_data and back, but it's worth it.

We want to use closures that capture by value because that lets us create the
path finding objects in a function and just solves a bunch of lifetime issues
the previous implementation had.
Update path finding examples to unboxed closures

The switch to unboxed closures itself is tiny (just opt into the feature and add
`&mut:` in front of the closure), but to demonstrate the benefit, we're now
creating the closure & the path finding object in a separate function.

Rust's by-ref closures are not allowed to escape the stack frame in which they
were defined but the by-val ones can. Which is exactly what we want in this
situation.
Don't use transmute_copy

I was using it to avoid passing ownership of the transmutees, but it's more
dangerous because it's not doing any size checks. This has already bitten me.

So this switches to met::transmute. That means the code is more verbose because
we need to explicitly take back the ownership of anything we allocate on the
heap, but we get the safety of size checking.
Merge pull request #13 from tomassedovic/unboxed-closures-pathfinding

Unboxed closures pathfinding