forces/pair_full: support two particle instances

In contrast to pair_trunc, pair_full did not support two different
particle instances. Adding support for this, makes the construction of
the pair forces analogue again.
host/…/pair_trunc: fix bug with Newton's 3rd law

Newton's 3rd law is imposed only if the the two particle instances
agree. Otherwise, the force in particle2 is not updated.

Minor changes for consistency between pair_trunc and pair_full.
mdsim/forces: improve documentation

Add a note on what is actually updated and what triggers the update.
Alert the user that Newton's third law is not obeyed for different
particle instances.
copyright message: update year
lua/potentials: fix 'label' argument

Specifying the argument 'label' for any of the potential modules would
result in an lua error upon construction.
lua/potentials: add label to profiler output

In order to differentiate between the potential instances, add the label
to the description, if available.

Also fix the instance labels to their correct name, as most of them were
named "lennard_jones".
max_displacement: use cache in order to track position updates

Using the position cache reduces the number of calculations for the
maximum displacements if the module called multiple times within the
same MD step, e.g. when used by multiple neighbour modules.
lua/neighbour: add optional 'displacement' parameter, simplify 'r_cut'

Using a user constructed displacement module, one can share instances of
max_displacement across multiple neighbour modules.

Further, the argument 'r_cut' can be given as number which will be
converted into a matrix automatically.
lua: add instance labels to profiling output

Add the particle instance label to the profiler output to binning,
max_displacement, particle and hilbert modules.
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
lua/helfand_moment: fix construction
examples/shear_viscosity: remove unused force parameter
lua/stress_tensor_autocorrelation: remove breaking code
dynamics: add method connect() to TCF registration

The computation of the stress tensor autocorrelation requires
particle:aux_enable() to be called in sampling steps. The sampling
intervals, however, are unknown upon construction and not regular if
used in conjunction with blocking_scheme.

Let blocking_scheme:correlation() call tcf:connect() if such a method is
provided. It passes the sampling interval to the tcf module which
connects particle:aux_enable() to sampler.on_prepend_force. The
connection is managed (stored and disconnected) by blocking_scheme.

If sampler accepts arbitrary grids of sampling steps in the future, this
approach is easily extended: blocking_scheme constructs such a grid
and passes it to tcf:connect().