Refactored Model.js API to use Object.create and Object.defineProperty, making models look more like plain JS objects. Updated most unit tests.