Event#set? changed to ensure visibility
Event#wait policy changed with a ConditionVariable
Event#set and Event#reset changed to support the new policy
Event general refactor