Comprehensive hwinfo structure concurrency fix.

The hwinfo structure and structures contained therein are inherently
global to any mdrun processes/ranks. This patch makes sure that
- The hwinfo structure is shared among all threads
- Only one thread creates a hwinfo structure
- The hwinfo structure is safe to read for all threads after they
    obtain it

In addition, it fixes the detection for pthread_setaffinity in thread_mpi.

This fixes concurrency issues with thread affinity settings with or
without MPI, and makes runner.c slightly easier to read because the
concurrency logic is pushed to gmx_detect_hardware.c

Fixes #1270, #1254

Note that #1254 issue 3 seems to be an OpenMPI bug.

Change-Id: I236e81923324d7873f3d8633889b91c7c02a7843
Corrected definition of EEL_USER

Looks like a copy-paste typo occured at some point in the nbnxn
development. EEL_USER is only used in runner.c, and only to issue a
fatal error with user-supplied non-bonded potentials. That clearly
should be not applicable to eelPMESWITCH.

Fixes #1289

Change-Id: I4e987c81aec81a920779dd29d7c52e8b6d233b45