Restore component.data functionality 

This PR begins to address #1413 and should make the make new mappings code in edge non-breaking. 

config functions (`data: function(data) { ... }`), `onconstruct`, and `onconfig` should now have access to read and write: `data` arguments, `options.data` and `this.data` respectively. 

Later code that access `this.data` will have the current value, but there is no write sync, ie `this.data.foo = 'bar'` will _not_ propagate back to the parent (though it never did).

Next step is to add some better performance for browsers that support defineProperty (`!IE8`) via prototypes.