Refactored the Event object. Becasue the Event is used in filesystem/FileCache.cpp in combination with CThread's stop so that the stopping of the thread will result in the termination of any 'wait's that are happening and registerd. I needed to introduce an IInterruptible which the Event implements and the CThread can interrupt on stop (optionally). Also replaced the CThread's use of platform specific thread local with a wrapped boost implementation. Events are only Interruptible explicitly (using a boolean in the constructor) and the explicit use of an Interruptible event is only used where CThread::WaitForSingleObject was used previously. That's FileCache.cpp.