Use gmx::Mutex and gmx::lock_guard to fix some issues
Refactored a few uses of raw thread-MPI mutexes to fix known leaks, so
valgrind and LeakSanitizer become more useful.
Discovered that the thread-MPI trylock behaviour has always been buggy
on Windows, and cannot be fixed so that the return code is consistent
across the two current implementations in the case where the calling
thread might already own the lock. Fortunately, we don't use trylocks
anywhere, and the problematic case is unlikely to occur, but the
limitation is now documented.
Added unit tests for whichever mutex implementation we are using, now
and in the future. These cover the above case.
Found bugs in _where, which presumably wasn't an issue if it only
ran when handling errors. But it runs multiple times per MD step.
Refs #2122
Refs #2123
Change-Id: If1b2f092c569f47d67ce39e6decb56f04cea314a