Improve have_attributes matcher failure message.

Improve hash attributes failure message by caching values and enumerating in output.

Fixes #667
I think this would be better phrased as "but had attributes" rather than "but got".