adding a clearer expectation failed message for toHaveData matcher

Currently, when a toHaveData matcher fails, it's a bit non-specific as to why it has failed, simply saying it expected the element to have a data-attribute named as expected.

This patch makes the expectation failed message more specific, differentiating between the following cases:

* data attribute was not present at all or no expected value was passed
* data attribtue was present, but its value does not match the expected value

Also: I am not entirely satisfied with the way I wrote those tests, and appreciate feedbak on that :)