New matcher: `have_attributes`

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

solved it, by doing:
```ruby
module Composable

   def surface_descriptions_in(item)
     #...
     elsif Struct === item
         Hash[surface_descriptions_in(item.each_pair.to_a)]
```
WDYT?