Better concurrency support for analysis nbsearch.
AnalysisNeighborhood::initSearch() now supports concurrent calls from
multiple threads such that each call creates an independent search.
A pool of search objects is kept allocated to avoid constant
reallocation of the data structures.
This allows using the neighborhood search routines transparently in
thread-parallel analysis tools after that is implemented in the
framework. The changes in the template demonstrate how this simplifies
the tool code.
Part of #866.
Change-Id: If469284671ec66e249e138e59da7cc87a8f4ac65