A lightweight observable
Whenable events implementation
Subscribe to an event before or after it's fired