refactored quite some: placed the functionality of adding eventlisteners and firing events in the EventTarget class (making it an abstract class instead of an interface). Refactored tests accordingly and added some stubs and TODOs accordingly.