deepCopyFn = function( a, b ){

    if ( Physics.util.isPlainObject( b ) ){

        return Physics.util.extend({}, a, b, deepCopyFn );
    }

    return b !== undefined ? b : a;
}
Physics.util.options( def[, target] ) -> Function
- def (Object): Default options to set
- target (Object): Where to copy the options to. Defaults to the returned function.
+ (Function): The options function

Options helper to keep track of options. Call it with a config object. Access options directly on the function.

Example:

```javascript
this.options = Physics.util.options({ foo: 'bar', opt: 'def' });
this.options({ opt: 'myVal' });

this.options.foo; // === 'bar'
this.options.def; // === 'myVal'

// can also change defaults later
this.options.defaults({ foo: 'baz' });

// can add a change callback
this.options.onChange(function( opts ){
    // some option changed
    // opts is the target
});
```