Created an Event class for passing
Changed Event to EventData to avoid some conflicts
Emitter now passes EventData
Upgraded promises to use EventData
Updated tests to handle new promises
Throw error data for any/all Promises