Object validation

@TabDigital/api 
I was thinking about testing the fix above.

Without the fix, the following would not return any errors, because obj became the path, so actually matched `s.string()`.

```js
  it('can handle undefined values', function() {
    var schema = s({
      name: s.string()
    });
    schema('', {name: undefined}).should.eql([
      {
        path: 'name',
        value: undefined,
        message: 'should be a string'
      }
    ]);
  });
```