forces: introduce a new model that supports multiple forces

This patch reverts commit bb52a29 partly and creates a new signal
on_force() in the particle module. This signal is used as a
trigger to calculate force updates.

To prevent unnecessary force computations, the force modules
will register themselves to particle:on_prepend_force().
In this step forces will test if their cache is up-to-date
and if not, they signal the particle module if a force
update is required.

This logic adds a (small) overhead when requesting auxiliary
variables or the force itself as every connected force module
has to test whether to update the variables or not.

In order to prevent calculating the force twice - first the force only,
second time with auxiliary variables while sampler:on_sample() -
reintroduce the function particle:aux_enable() to enable
the computation of the auxiliary variables in the next force
computation. For now, this is used in the thermodynamics module
only. More will follow in subsequent commits.