Change how the parent constructor is called when extending objects

This is so we can monkey patch the parent's constructor later on and
still have it be called by extensions of the base object.

Here is something that is allowed due to this change:
```javascript
var SomeView = Backbone.View.extend({});
var ctor = Backbone.View.prototype.constructor;
Backbone.View.prototype.constructor = function() {
  alert('Foo');
  ctor.apply(this, arguments);
}

new SomeView(); // Should alert 'Foo'
```