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');
This feels a bit confusing to me. Why is `getPathParent()` calling out to `_getPathParent()`. Can't they be the same method?