Model: fallback when Object.defineProperty() fails

Object.defineProperty() is used to hide the private properties _dirty
and _data. When running in a non-ES5 environment, we need to fallback to
directly setting those properties.
Merge pull request #10 from Aintaer/master

Model: fallback when Object.defineProperty() fails