reimplemented A* search treating openList as a binary heap with f_score
as the sorting function. indexes in openList correspond with indexes in
f_score, so changes must be applied to both