New matcher: `have_attributes`

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

I'm not a fan of special-casing `Struct`.  Our examples here use a struct for simplicity but any kind of ruby object can be used.  It'll be confusing when other types of objects are used. Thinking about this more broadly, the actual object is _any_ arbitrary ruby object, while the expected is provided as a hash.  I don't think it makes sense to do a textual diff of an arbitrary ruby object against a hash.  Let's make the matcher not diffable for now.  We can always revisit.