event emitter based on https://github.com/jeromeetienne/microevent.js/commits/master/microevent.js