New matcher: `have_attributes`

see: https://github.com/rspec/rspec-expectations/issues/565

@myronmarston @JonRowe @cupakromer /cc

TODO's
- [ ] update README

Another reason to treat it this way: it means that with each additional key/value pair, you are strengthening the expectation.  It is specifying an additional thing about the object that must be true for the example to pass.

In contrast, as currently implemented, each additional key/value pair makes the expectation weaker:

``` ruby
# This will only pass if the name is _not_ Myron
expect(person).to have_attributes(:name => "Myron")

# ...but now it could pass if the name is Myron, as long as the age is not 32. (Or vice versa).
expect(person).to have_attributes(:name => "Myron", :age => 32)
```

Imagine an extreme case, where you pass 100 key/value pairs: the expectation means practically nothing.  All that a passing example would mean is that at least 1 of the 100 attributes does not have the specified value.  The other 99 could all have the values that you've just said you don't expect.

What use would that be?