Improved behaviour for matching of `undefined` and `null` properties

Thank you very much for merging #10 so quickly.

However, I have to admit that I’ve been a little bit sloppy and forgot about some specific cases:

- If a matcher object contains a property that is `null` and the tested object has a corresponding property with a different value, `match()` should return `false`.
- If a matcher object contains a property that is `undefined` and the tested object has a corresponding property with a different value, `match()` should return `false`.
- If a matcher object contains a property that is `undefined` and the tested object does not have a property with the same name, `match()` should return `true` nevertheless.