Fix properties with `undefined` value pass property assertion

I was doing some interface assertions and noticed that properties that have a value of `undefined` assert as not existing. This is an initial hack at how I think this could be resolved. I just wanted to get this up and get some suggestions and comments to tighten this up.

    var obj = { foo: undefined };
    Object.defineProperty(obj, 'bar', {
        get: function() { }
    });
    // These both assert without this change
    obj.should.have.property('foo');
    obj.should.have.property('bar');

Fixes #184 
I'm not against moving this outside, but it has no general applicability outside of this code. My own personal style is to put functions that are akin to variables inside of the scope where they are used, if it is more in-line with the project's style to have this outside then I'm cool with that.