A* shortest-path algorithm

I tried to aim for API consistency with other shortest-path algorithms in the package, but I'm sure it could be improved.