Assertions for unexpected values (undefined and NaN)

As I understood the semantics of `assert.propertyVal`,  it should simply check if a given key has a given value associated. But it doesn't behave that way when the value is `undefined` or `NaN`.

That is, the following assertions fail:


```javascript
assert.propertyVal({evil: undefined}, 'evil', undefined)
assert.propertyVal({camus: NaN}, 'camus', NaN)
```

But they shouldn't. This PR addresses that (or, rather, tries to :) )