New matcher: `have_attributes`

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

> if consistency means doing:

That's not what I mean by consistency.  (In fact, I don't think we have any matcher aliases that use that form).

I mean that most of our matcher aliases use an `-ing` form:

```
➜  rspec-expectations git:(3-0-maintenance) ack "alias_matcher.*ing" lib/rspec/matchers.rb
    alias_matcher :a_block_changing,  :change
    alias_matcher :changing,          :change
    alias_matcher :a_collection_containing_exactly, :contain_exactly
    alias_matcher :containing_exactly,              :contain_exactly
    alias_matcher :a_range_covering, :cover
    alias_matcher :covering,         :cover
    alias_matcher :a_collection_ending_with, :end_with
    alias_matcher :a_string_ending_with,     :end_with
    alias_matcher :ending_with,              :end_with
    alias_matcher :an_object_existing, :exist
    alias_matcher :existing,           :exist
    alias_matcher :a_collection_including, :include
    alias_matcher :a_string_including,     :include
    alias_matcher :a_hash_including,       :include
    alias_matcher :including,              :include
    alias_matcher :an_object_matching, :match
    alias_matcher :a_string_matching,  :match
    alias_matcher :matching,           :match
    alias_matcher :a_block_outputting, :output
    alias_matcher :a_block_raising,  :raise_error do |desc|
    alias_matcher :raising,        :raise_error do |desc|
    alias_matcher :an_object_responding_to, :respond_to
    alias_matcher :responding_to,           :respond_to
    alias_matcher :an_object_satisfying, :satisfy
    alias_matcher :satisfying,           :satisfy
    alias_matcher :a_collection_starting_with, :start_with
    alias_matcher :a_string_starting_with,     :start_with
    alias_matcher :starting_with,              :start_with
    alias_matcher :a_block_throwing, :throw_symbol do |desc|
    alias_matcher :throwing,        :throw_symbol do |desc|
    alias_matcher :a_block_yielding_control,  :yield_control
    alias_matcher :yielding_control,          :yield_control
    alias_matcher :a_block_yielding_with_no_args,  :yield_with_no_args
    alias_matcher :yielding_with_no_args,          :yield_with_no_args
    alias_matcher :a_block_yielding_with_args,  :yield_with_args
    alias_matcher :yielding_with_args,          :yield_with_args
    alias_matcher :a_block_yielding_successive_args,  :yield_successive_args
    alias_matcher :yielding_successive_args,          :yield_successive_args
```

It's easier to guess what the matcher alias will be when we stick with a common convention like this.

> than by looking at other alias_matcher definitions, it seem like natural phrasing is mostly favored:

Those are all examples of `-ing` phrasing.  They do read pretty naturally, but there are other phrasings that are pretty natural, too:

* `an_object_that_matches("foo")` rather than `an_object_matching("foo")`
* `an_object_that_responds_to(:foo)` rather than `an_object_responding_to(:foo)`
* etc.

I think I'm leaning towards `an_object_having_attributes` for consistency.

Thoughts from @samphippen @soulcutter @cupakromer @xaviershay @yujinakayama ?