Added template interface to better define expected functions of UserState
Added template interface to better define expected functions of UserState

- Created a template interface AStarState which defines all the necessary functions that AStarSearch will require of the UserState. This serves as a quick reference and can also ensure a properly implemented class is provided to AStarSearch (enforcable only with C++11 features).

gerram/astar-algorithm-cpp,gerram/astar-algorithm-cpp,majinjing3/astar-algorithm-cpp,justinhj/astar-algorithm-cpp,majinjing3/astar-algorithm-cpp,justinhj/astar-algorithm-cpp