Disable analysisdata generic tests if not compilable

If Google Test claims that typed tests are not supported, exclude the
analysisdata generic tests that use this functionality from compilation
(since they wouldn't compile).  Instead, add a dummy test that at least
shows a developer who runs the unit test executable directly that
something is missing (the ctest run still passes without any messages).

Change-Id: Iba9bcc4b993e5213fe48e24d52b09474e5801fa8
Fix wallcycle counting with md-vv, sd and sd2

Previously the coordinate update for the first half of velocity Verlet
and (where applicable) the second half of the SD integrators was left
out of the walltime accounting, and showed up in the "Rest"
section. With this fix, the number of "update" steps reported depends
on exactly which flavour of which integrator is in use, because
there's also some number of calls to do constraining and/or energy
communication. Those numbers vary with either the flavour of
integrator, or the number of iterations MTTK actually needs.

Change-Id: Ib294455b7277caf89018c413d6c1c0ebf93c6ddb
Fix gmx tune_pme with LJ-PME

Extend the range of vdwtype for which tune_pme will scale rvdw. This
makes tune_pme worth using with LJ-PME.

Change-Id: Iec702ae984cd062d47970380c0ca41f82e4c31d2
Don't build tests until they are run

There is no advantage to normal users, to build the tests until the
user decides to run them. Also avoids that the user thinks that
Gromacs doesn't compile on his platform if there is only a problem
with the testing framework.

Added a GMX_DEVELOPER_BUILD option which restores the old behavior.

Change-Id: Ifda2184eb45bf58b8798f21a29aea19bef57c690
Halved the cost of the pull communication

With DD the PBC reference coordinates are now only communicated
after DD repartitioning. This reduces the number of MPI_alltoall
calls from 2 to 1 per step, which can significantly improve
performance at high parallelization.

Added a cycle counter for pull potential.

Added checks for zero pull vectors to avoid div by 0.

Change-Id: Ib89ba9e14eaa887f59a5087135580bc29a20d7d0
Fix Portland compiler warnings

The PGI compiler finds several unreachable code
parts, mainly due to multiple return statements
being used. For most places this is just a
cosmetic fix to get rid of warnings, but functions
that are performance-sensitive should only have
a single return statement since the return
instruction causes a pipeline stall on many
architectures. This patch also fixes a warning
about an unused variable.

Change-Id: Ibf1c9e9dd1cdf29fc59c84afa4348e02bed270e6
Add Intel command line warning

Fixes that build was printing a warning for scanner.cpp.

Related to #1483

Change-Id: I8a30fce82ab7ef0bfe735630b1ce4d9bb636b36d
Shorten plugin configuration message

This is just a minor note, so make sure it fits in a
single line rather than drawing attention to itself.

Change-Id: I086f3a90fdcdb92aa5920c27cc9176bae8c9bce4
Add cycle counters for 64-bit ARM

The gcc code has been tested on actual ARM64
hardware, but the MSVC one is only implemented
from the MSVC manual.

Change-Id: I13aac4d65345c684b6ddc5812ca9c3fcbe27b81a
Enable SIMD register calling convention with gmx_simdcall

Cmake now checks if the compiler supports __vectorcall or
__regcall calling convention modifiers, and sets gmx_simdcall
to one of these if supported, otherwise a blank string.
This should enable 32-bit MSVC to accept our SIMD routines
(starting from MSVC 2013), and with ICC it can at least in
theory improve performance slightly by using more registers
for argument passing in 64-bit mode too. Presently this is
only useful on x86, but the infrastructure will work if we
find similar calling conventions on other architectures.

Fixes #1541.

Change-Id: I7026fb4e1fb6b88c8aa18b060a631cbb80231cd4
Fix matrix pointer dereference bug in update.c

The PGI compiler found a bug where an if-statement
checked against a dereferenced pointer rather than
the pointer itself being non-NULL.

Change-Id: If08977b818f28e1c78c35222d0f4efe6ae6aad65
Change error to warning for missing OMP_NUM_THREADS

Setting the default number of OpenMP threads using -ntomp works too. Using ntomp
allows to use the regressiontests. A proper fix should be done in master because
it requires larger code changes.

Change-Id: Ic47cebc9da6cf1b0624a1383d7ce23f93bd26dbe
Add _GNU_SOURCE=1 to find clone() with PGI

The PGI C++ compiler would not find clone()
in sched.h unless _GNU_SOURCE is set, and
it shouldn't hurt any other platforms if
we add it by default for gmock.

Change-Id: Id9446622bb49e17efd80ea1508e0ee40b48acdbe
Merge release-5-0 into master

Conflicts:
  src/gromacs/legacyheaders/types/simple.h
    - applied gmx_unused change to basedefinitions.h
  src/gromacs/mdlib/sim_util.c
    - took adjacent changes from both branches

Change-Id: I42071be546015ede33b03a34ef0d95a5d5a3b09e