TargetedEventInterface should should also ensure the EventInterface is fulfilled.
TargetedEvent now ensures the interface is implemented.

PHP does not allow traits to implement interfaces.
Adding EventTrait, containing an implementation of EventInterface.

Event class updated to utilise this new trait.