Made some Model methods defined by `defineProperty` writable so they can be mocked

Useful for functional testing and not integration testing when using orm2.

- writable added to some model instance defineProperty calls, some properties were left alone because they were static or had unknown function (isShell for example)
- added a model-remove test that currently only tests the writable aspect (there appears to be no direct test of this function, other than from the hooks tests)