Add support for async event handlers

When child views are being handled by parent views, I find my self often needing to fire 'before*' events in child views which may be handled asynchronously in the parent. It would nice if backbone supported async handlers(deferreds) to remove other custom events('ok-to-remove', 'not-ok-to-remove',  required to solve this problem. End result would be something like:

```javascript
var View = Backbone.View.extend({
	remove: function() {
	     var me = this;
	     this.trigger('beforeremove').then(function() {
	         me.remove();
	     },  function() {
	     	 console.log('cannot be removed');
	     })
	}
});

```