use boost::optional as a return value of getMeshNodeIDForPoint()
add a general searching function for any geometric types in MeshNodeSearcher
add Distribution function
add a function to search connected element ids
initial implementation of BoundaryElementSearcher class