Ignore built-in object properties when using objects as hash tables

JavaScript object initialised via `{}` have some predefined properties such as `constructor` and `toString`. When objects are used as hashes, these properties can cause weird behaviours.

In the Collection id lookup cache, `new Collection().get('constructor')` returns `Object.prototype.constructor`. Similarly `new Model().get('toString')` returns `Object.prototype.toString`. Even worse, this causes `new Collection().push({id: 'hasOwnProperty'})` to throw an exception.

To prevent this, I've added hasOwnProperty checks to `Collection.prototype.get` and `Model.prototype.get`.