Add mediator.subscribeOnce and mediator.on/once/off/trigger

see #801