Extend this FastDom with some
custom functionality.

Because fastdom must *always* be a
singleton, we're actually extending
the fastdom instance. This means tasks
scheduled by an extension still enter
fastdom's global task queue.

The 'super' instance can be accessed
from `this.fastdom`.

@example

var myFastdom = fastdom.extend({
initialize: function() {
// runs on creation
},

// override a method
measure: function(fn) {
// do extra stuff ...

// then call the original
return this.fastdom.measure(fn);
},

...
});

@param  {Object} props  properties to mixin
@return {FastDom}
function(props) {
        if (typeof props != 'object') { throw new Error('expected object'); }

        var child = Object.create(this);
        mixin(child, props);
        child.fastdom = this;

        // run optional creation hook
        if (child.initialize) { child.initialize(); }

        return child;
    }