Fix hsEvent to match the old behavior better

This version of hsEvent more accurately matches the previous (Win32) behavior, and also serves as a proper binary semaphore type.  Furthermore, it is immune to the spurious awakening that the unfixed C++11 version would be susceptible to.