Add restraints framework.
Extension code can implement IRestraintPotential and register to
provide MD forces and energy. Client code is not necessarily expected
to implement the interface directly, but likely with the help of
template headers.
Restraint functors should ultimately be retrieved or instantiated from
factory functions in the API Context manager provided to the simulation,
but in the current implementation, registered restraints are made
available during launch through the MdrunnerBuilder.
For sample extension code, see
https://github.com/kassonlab/sample_restraint
Supports gmxapi milestone 9,
Refs #2585
Change-Id: I48d57570721223eacca957c9a0f7ae98163ab6ff
14 files changed: