FMT updates: improves code, heuristics, kNN and collision check caching

Please, note that the new parameter cacheCC_ is intentionally not included as a PlannerParam because we want the general users to take advantage of it and not disable it accidentally. An advanced user could use the setCacheCC() method.
Optional: rather than passing a bool here, you could have a different MotionCompareHeuristics object, which you would use instead, avoiding the if statement at every call.