Improve extension API in EventContext
- add EventContext::emplaceExtension to construct 'in situ' an extension and return a reference to the created extension
- use perfect forwarding in EventContext::setExtension, and return a reference to the created extension
- change EventContext::getExtension() (const) to return a (const) reference to the extension, if there is an extension of type T, and throw otherwise
- add EventContext::hasExtension() and EventContext::hasExtension() check whether there is an extension resp. whether there is an extension of type T
Edited by Gerhard Raven