Improve event dispatcher + add event trigger

I've improved the event dispatcher to allow the "on" method to register multiple events a la jQuery (e.g, snap.on('open close', function(event, trigger) {}) will listen to both the "open" and "close" events + added the trigger ('button', 'tag', or 'drag') to the event callback. All the modification all backward compatible.