Start adding unit tests.
Replace the Emitter::Trigger method with a function operator. This makes the use of it more intuitive. Consider "DataReceived.Trigger()" vs "EmitDataReceived()".