Rework gmx-solvate to use analysis nbsearch

- More understandable control flow, with less code.
- No memory leaks.
- No dependency on mdrun/group kernel specific neighborhood search, so
  no confusing messages about deprecated group kernels or LJ/Coulomb
  cutoffs.  All output is controlled by the tool code now.
- Eventual group kernel removal no longer needs to consider these tools.
- Now tool code is independent of t_forcerec.

Even without additional algorithm-level optimization allowed by the new,
more flexible pair search, the new code outperforms the old one by ~30%
(in a debug build) in the cases triggered by the unit tests.

Some useful functionality is refactored into topology/.  Subsequent
changes can clean that up and start using those parts also in
insert-molecules.

Change-Id: Ibad1090667e057a00c08a84bdb6bebbf2e55c5f4