Add basic GPU support for gmx tune-pme

New functionality
* permits the user to specify a per-node list of eligible GPU ids (as
  distinct from mdrun, which permits the user to specify the array of
  actual GPU ids to use), which it will then map to the PP ranks
  in round-robin style during the optimization
* detects whether the mdrun is GPU-aware if the user specifies GPU ids
* handles error from mdrun when number of PP ranks does not match the
  GPU id string provided
* handles error from mdrun when GPU with given id is invalid
* runs check that a .tpr will work mdrun with -npme 0, which is less
  likely to run into issues at small scale with eligible partitioning
  issues than -npme -1; noted TODO to fix this for large scale also

This code does not do anything active about optimizing the use of
OpenMP, as current-generation tune-pme is basically designed to have
no ability to change the number of MPI ranks at all. However, if the
MPI system is set up such that mdrun's automatic allocation of OpenMP
threads to ranks will work, then the optimization can take place over
runs that actually trigger the use of OpenMP. (This was true before
this patch.)

Some TODOs noted inline for future clean up / feature addition.

Refs #1119

Change-Id: Ic1ea4e7524f62e7e7480b2e61a0c0afad41ca710