Major efficiency increases in the search function:
1. TromboneSearch keeps a cache (a Hash object) of the cost of points
2. The candidate_list now persists from iteration to iteration, as long as the current point does not change
3. The candidate_list still has to be sorted each time, but as get_cost allows for a hash lookup this sorting time is negligible