The idea is to provide a uniform iterator based API
** For kNN, the query is performed at construction time, neighbors are stored into the iterator, and operator++ is straightforward.
** For range queries, everything is done by operator++: it iterates over the nodes and the neighbors of the current leaf...
** What about the end iterator? we would probably have to create a dummy iterator and restrict operator != to the comparison of a regular iterator and a dummy one...
Add Scalar class to detect numerical instabilities due to type precision at runtime (http://cpp.sh/9o2o)