Converted many integrator-loop files to C++

Moved code from mdlib/init.c to other locations, to avoid creating an
init.cpp file that was freaking out the ASAN build, perhaps via linker
filename clash with utility/init.cpp. Renamed gmxlib/mvdata.c to
mdlib/broadcaststructs.cpp since that makes sense now.

Converted min and max to std:: varieties, and provided explicit
template specifications where required. Used std::sqrt to help the
compiler do automatic template type deduction.

Used static_cast<int> to suppress warnings about comparison between
signed and unsigned integers, and conversion of double to int where
that is the intention of the code.

Converted a few variables between int, real and double to correctly
reflect the intention of the code.

Fixed use of double for number of steps completed, which should be
gmx_int64_t. Formally, this is a bug in release-5-0, but you'd have to
do 2^53 steps to notice it.

Used const real to define constants so that the std::pow overloads
on Windows can work smoothly.

Added some width specifiers on environment-variable scanf calls
to avoid problems.

Removed many unused variables.

Added inline cppcheck suppressions for writes to variables that are
only read when OpenMP is being used. A recent change introduced such
variables to work around compilers that have bugs if you call a
function inside the #pragma omp, but those variables are unused if the
compilation does not use OpenMP.

Added C++ guard to free-energy kernel header.

Change-Id: Id190e36758fa6aef68b14e5c9b78eacfb0a86949