New matcher: `have_attributes`

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

This and `failure_message` have duplicated logic.  How about something like this?

``` ruby
def failure_message
  respond_to_failure_message_or { super }
end

def failure_message_when_negated
  respond_to_failure_message_or { super }
end

private

def respond_to_failure_message_or
  if respond_to_failed
    respond_to_matcher.failure_message
  else
    improve_hash_formatting(yield)
  end
end
```