Add feature to change new assertion properties

We hook the addProperty method and once the property is added, we convert it to a chainable method.
As long as dirty-chai is required before any other chai plugins, it will make all plugin extension properties into chainable methods.

	// Load dirty chai first to hook plugin extensions
	var dirtyChai = require('dirty-chai');
	chai.use(dirtyChai);

	var sinonChai = require('sinon-chai'),
    chai.use(sinonChai);

	var spy = sinon.stub();

    // Now all of sinon-chai's assertion properties will be chainable methods
	spy.should.have.been.calledOnce(); // instead of spy.should.have.been.calledOnce;
	spy.should.have.been.calledWithNew();

    // The chainable methods can also still be chained in the property form
    // as long as the chain is terminated in the function form.
	spy.should.have.been.calledOnce.and.alwaysCalledWithNew();