Introduce broad search step in Curve.hasPoint for plots and functiongraphs

This broad search is implemented using quad trees. Instead of running through all of the curve's datapoints we first collect all points in a quad tree and use this tree to search for a very small number of points (atm 10) which are then used to check if the given point is near the curve. This reduces the number of nearance checks drastically, the Curve.hasPoint() runtime no longer depends on the position of the given point.

The quad tree is only used if the curve attribute useQDT is set to true (default for now: false) and a tree has been calculated. The tree is updated in updateCurve() but only if the board quality is set to BOARD_QUALITY_HIGH.