particle: add Lua equality operator __eq(a, b)

This is analogue to the implementation introduced for wavevector in commit 1b6ed1a7
lua/max_displacement: add 'particle' property
neighbour: use separate displacement module for each particle

In order to support multiple particle instances more correctly, the
neighbour module will need a separate displacement module for each
particle instance. For now, the GPU variant of from_binning does not
support two particle instances correctly, but all others do.

This also tests if the particle instances of the displacement modules
match with the provided particle instances in the Lua module of
the neighbour list implementation.
utility/hostname: do not throw exception when host name cannot be resolved

Use the non-throwing variant of resolve() in order to be able to run
simulations even if the host name cannot resolved for some reason.
gpu/neighbours/from_binning: use correct binning instance

The second binning instance is supposed to be related to the second
particle instance, so use second instead of first.
lua/neighbour: construct two binning modules, if necessary

Only the binning module for the second particle instance was
constructed. When having two different particle instances, two
separate binning modules are required.

In the absence of a binning module, sorting is disabled on the host.

This commit fixes #247181.
lua/hilbert: document the requirement of the 'binning' parameter