portability aspects in install guide + minor tweaks

Added information on portability aspects related to CPU instruction
sets, related to #1428.

Additionally, made several minor updates and tweaks related to
compilers, platforms, cmake, etc.

Change-Id: I621262c939c119e5bdd5e7c91dda0ae3ffc60b7b
Permit warning-free use of Andersen thermostat

Simulations using Andersen thermostat don't need to remove center of
mass motion, because that is intrinsic to the algorithm. Using it with
nstcomm > 1 generated a warning that center-of-mass removal is
unnecessary. Using it with nstcomm == 0 generated a warning that
ice-cube artifacts might be generated. Resolved by suppressing the
latter warning for both Andersen thermostats.

Change-Id: I6b2c1594cabd81964b3ba1ebc5dd61e0f1debb5e
Misc. Doxygen configuration changes

- Adjust Doxygen preprocessor behavior such that it actually parses
  #ifdefs in the code.  Otherwise, some parts of the SIMD code seemed to
  get ignored.
- Extract static functions on all levels of documentation for
  consistency (and we may end up with some static inline members in
  public headers; currently at least vec.h qualifies).
- Remove unnecessary excludes now that VERBATIM_HEADERS=NO already
  excludes the unwanted files.
- Some other minor cleanup.
- Move member groups higher up in the layouts, since they generally are
  the most interesting part.

Change-Id: Iea04772628716ed12f44cd4465c2027f4670bfae
Residual SIMD Doxygen improvements

- Add a link to the overview documentation from the module page.
- Remove some trailing spaces.

Some issues noted, but not fixed here:
- \nosubgrouping would make the file pages look more consistent, if it
  worked for files...
- Some of the SIMD routines are not included in any named group, making
  them appear separately at the end of the documentation.
- The list of members on the SIMD module page is exceedingly long,
  making it hard to find things there.  Would require some thinking on
  how to best solve this.

Change-Id: I628f321172a3c3e8f4874e166c48e12763d1490e
Improved CUDA non-bonded kernel performance

Some old tweak which was supposed to improve performance had in fact
the opposite effect. Removing this tweak and with it eliminating 
shared memory bank conflicts it caused improved performance by up
to 2.5% in the force-only CUDA kernel.

Change-Id: I7fcb24defed2c68627457522c39805afc83b3276
Bumped TNG to latest version.

Change-Id: Id3ca6c18c1f51640997829bd8ad251a7ca91d04f
Added CUDA LJ-PME nbnxn kernels

This change implements CUDA non-bonded kernels for LJ-PME introduced
in the Verlet scheme with 99029d.

The CUDA kernels implement geometric as well as Lorentz-Berthelot (LB)
combinations rules (unlike the CPU SIMD) mostly because even though PME
is very slow with LB, it is still beneficial to let the user offload the
non-bondeds to a GPU and potentially bump up the cut-off to further
reduce the CPU PME load.

Note that as now we have 120 kernels compiled for up to four different
target architectures, the nbnxn_cuda module takes a very long time to
build and can become the bottleneck during compilation. We will deal
with this later.

Change-Id: I819b59a8948da0c8492eac6a43d4a7fb6dc98354
switch ld_seed from int to gmx_int64_t

* allows more than 4,294,967,295 different seeds for ld
* tpx version bumped, used new style for magic version constants
* changed printf format strings to conform to new type

Change-Id: Id661ca331a100dc942ac978cc1b50cfdade09731
Add fatal error for Andersen+constraints+DD

This combination produced a temperature that was 6.5 degrees higher
than the same with one domain, for a 1ns PME lysozyme in water
simulation.

Change-Id: I9f80276c47de955a5053bcabb6fe7c9bfdceaf0e
Move default library path search to program context

The default library path search is now implemented in
CommandLineProgramContext, and accessible through the generic interface.
This provides the following benefits:
 - All the magic for finding stuff from the binary path is in a single
   place, under the commandline/ module, where it belongs.
 - Code using the library path is now in C++, fixing some potential
   buffer overruns and removing the need for some utility code.
 - Programs using the Gromacs library can customize how the library data
   files are found.
 - PATH_SEPARATOR is no longer exposed outside path.cpp, encapsulating
   this detail.
 - The library path is only searched once during the execution of the
   binary, reducing the amount of file I/O done if multiple data files
   are accessed.
 - The library path is printed in the startup header, making it explicit
   where they are read (helpful in particular if there are problems with
   it, or the user may have multiple installations).  The GMXLIB
   override doesn't currently affect this printout; maybe it should, but
   I don't want to put the environment variable (and the support for
   multiple directories) into the program context.

Change-Id: I4d099215ef7e1f269d4c7a42989835d980bc1566
Fix incorrect grid cell size in g_sas -nopbc

Fixes #1445

Change-Id: I798fc8fe96608633f26d9a3500f83f39b44af008
Fix calling SIMD group kernels

The #define of GMX_SIMD*_OR_HIGHER takes place in simd.h, which got
changed late in the evolution of the recent SIMD-module patch, in
order to reduce unwanted module dependencies. However, the explicit
dependency of the group kernel setup code on the SIMD module was not
added. (It seems that the dependency on the old SIMD macros.h was been
satisfied transitively.) In effect, this turned off group-scheme SIMD,
but the silent fallback to C kernels meant there was no red flag until
we got around to measuring performance.

Change-Id: I78842cb191f6188fe4188800399efd2ed99e5543
Merge release-4-6 into master

Conflicts:
	admin/installguide/installguide.tex

3643d2a Add fatal error for Andersen+constraints+DD ignored
because already in master.

Change-Id: I6b3346503036e5b31bcc929daa5bcc9a04dde3bc
Add enum and docs for using tpx_version

Documented procedure for having hassle-free feature branches and
ensuring merges into main branch cannot silently cause problems.
Added an enum to make the process work smoothly.

Change-Id: I69b87f9bac0b51784e70f8a618808ef086951343
Avoid segfault when comparing tpr

Segfault was possible if number of idef didn't match

Change-Id: I62315e3340eec8acf14c01d14917392bc63e46e0
Check zlib can actually be linked

Only use zlib compression in tng if zlib can really be linked.
This is equivalent to ee26e1264 for libxml2.

It is slightly simpler than the approach in gmxTestLibXml2
and CheckLibraryExists could be used there too.
This does not detect potential linking errors with shared
libraries similar to those solved in #740 for FFTW.

Fixes #1435

Change-Id: I5009e50b6caf810a12e71ecd83bde2edb21a2b32
Buffer estimate now works with rvd-switch=0

With rvdw-switch=0, the Verlet buffer estimation code would divide
by 0. The estimate for vdw-switch functions now use the exact 3rd
derivative of the potential at the cut-off iso estimating the 2nd.
grompp now prints a note with rvdw-switch < 0.5*rvdw.
Updated estimate formula in the manual and added a missing factor
of 2 (the code did use the factor of 2).

Change-Id: Ia259d703515f69b0ed3390e2f7be671e0a15bd5f
Merge "Merge release-4-6 into master"
Report MIC SIMD correctly

Avoid cmake warning because SIMD cannot be detected. And
avoid that version information prints "None". This is
needed because MIC doesn't use GMX_SIMD so that the same
setting (__MIC__) can be used both for native and (future)
offload.

Also added installguide section.

Change-Id: I4af3b13678aa5c3c69c60bda499c3691ac83dc53
Remove dependency on TNG in trxio.h

Partial fix for #1452

Change-Id: I59474ea08d40362fa9d10745a5fb1d4e12254b68