util: rewrite EventEmitter with C++11 features

This commit does not enhance the functionality of EventEmitter.

refs #2116

Change-Id: Iff1d5ae9fbd8e575773d71c7a93339045fcb8bc4