Improve have_attributes matcher failure message.

Improve hash attributes failure message by caching values and enumerating in output.

Fixes #667
Because we need to compare all the values to cache them all, `all?` shortcuts when it encounters a failure (something I only remembered when the build failed on ree due to hash ordering)