Common: Add a 'Flag' class that is used to encapsulate a boolean flag manipulated from several threads
Common: Move the Event class to a separate file, and add tests for it. Fix includes everywhere to match this.
Common::Flag: Add support for TestAndSet + test by implementing basic spinlocks.
Common::Event: Implement in terms of Common::Flag to get rid of a volatile and optimize with early returns and atomic swaps