switch basically everything from uising CriticalSection internally to recursive_mutex (nb: this made the code larger - but hopefully msft will eventually fix that - and not as important in the long term as fitting well with C++11