[experiment] use boost::optional as a return value of getMeshNodeIDForPoint()
add a general searching function for any geometric types in MeshNodeSearcher