Add 'to have properties' assertion

Implements feature suggested in https://github.com/sunesimonsen/unexpected/issues/23

```js
expect({a: 'a', b: { c: 'c' }, d: 'd'}, 'to have properties', ['a', 'b']);
expect({a: 'a', b: { c: 'c' }, d: 'd'}, 'to have own properties', ['a', 'b']);
expect({a: 'a', b: { c: 'c' }, d: 'd'}, 'to not have properties', ['k', 'l']);

expect({a: 'a', b: { c: 'c' }, d: 'd'}, 'to have properties', {
     a: 'a',
     b: {
          c: 'c'
     }
});
```