Matches keeps an internal reference to spec object

Fixes #1729
`obj = Object(obj);` means that `null` will be treated as an object so that means:
```js
var m = _.matches({ 'constructor': Object });
m(null)// -> true, which is not right
```