Move modular simulator decision before checkpoint loading
Currently, the decision on whether to use modular simulator is done
relatively late during the runner stage. This makes it impossible to
allow for different behavior at checkpoint loading time. The current
change therefore moves this decision before checkpoint loading time.
To achieve this, some adaptations were needed:
* Use gmx_mtop_interaction_count to determine whether virtual sites
will be used before the respective object is created.
* The membrane embedding check via pointer is replaced by a boolean
set earlier during the runner phase.
* The essential dynamics check was split to catch command line inputs
during the runner phase, and mismatching checkpointing data during
the simulator phase (mirroring legacy behavior in do_md()).
* Replace the ensemble restraint check by a low-level alternative
for the early runner call (mimicking the distance restraint
initialization), while keeping the current check for the
simulator-level call. Note that as multi sims are disabled, this
low-level test will effectively never fail, but the additional
clarity is helpful in further development. The later test ensures
that changes to the init_disres() don't make this check invalid -
if they would ever get out of sync, the simulations would exit with
a fatal error.
Refs #3377 (fixes point 1)
Change-Id: I635e033db51d6ecc8bf121c72730a121e04586dd