Improve `lattice.neighbors()`
it should support the following cases:
- The lattice has lower dimensionality than the space
- Hoppings between sites from two separate lattices
The function should be rewritten in a more robust manner using Delaunay tessellation from Scipy/QHull and a proper choice of the set of sites on which to perform the tessellation.