A* code review

Hi Timur,

I did a code review for your A* function and its related code.

The bad news: I couldn't make it any faster.  Your logic works fine.

The good news: everything is a lot more broken up and a bit more object oriented.  Should make it easier to debug.