make have_attributes matcher diffable (in some cases)

fixes #667 
related to #668 

My attempt to make `have_attributes` matcher diffable:

- diffable, when failed because of different values

  Example:

  ```diff
  -:name => "Wrong Name",
  +:name => "Correct name",
   :age => 30,
  ```

- diffable, when used with matchers in expected values and when failed because actual values don't match

  Example:

  ```diff
   :name => "Correct name",
  -:age => 30,
  +:age => (a value < 25),
  ```

- not diffable, when negated
- not diffable, when `respond_to` failure

Regarding to this comment https://github.com/rspec/rspec-expectations/pull/668#issuecomment-58739468 I would like to add spec specifically showing how diffing works when multiple composable matchers are used as expected values.

Feedback is welcome. Especially in spec suite for this.

Is it needed to change anything in cuke for this feature to show that this matcher has diff output for users?

/cc @myronmarston @JonRowe 
Is it possible to do that diffing matching logic better?

I resorted to use multiline regex with a bunch of `.*` because it terminal color-controlling output.

I tried to disable color output inside of example, but `#differ` ignored my settings (actually inside of `#differ` they was the same as before) like this: `RSpec.configuration.color = false`.