fix deep object comparison

This fixes the following issue:

```
var a = { _id: { bytes: new Buffer(…) }}; // { _id: ObjectId }
var b = { bytes: new Buffer(…); }; // ObjectId
eql(a, b);
```

This piece of code throws [TypeError: Cannot read property 'bytes' of
undefined] because it does not check whether b has a higher-level
property before diving deeper into the matcher object.