Exception improvements

This improves the exception part of the library:

- remove duplicated code handling the string rendering of exception
- make ``ElementHtmlException`` use the outer HTML when possible
- remove ``ElementAttributeNotFoundException``, which is just an ``ElementHtmlException`` with another name
- remove ``ElementAttributeException`` in favor ``ElementHtmlException`` as it is broken currently (calling ``$element->getAttribute()`` without arguments is a catchable fatal error, which would happen when rendering it as string). Thanks to the usage of ``getOuterHtml``, the useful information is present in the context.
- Make ``ElementNotFoundException`` inherit from ``ExpectationException`` as it is also an expectation failure
- Add tests covering the string rendering of exceptions, refs #406
- Moved the string rendering utilities to ExpectationException as they are not used anymore in other exceptions not extending it, avoiding to have broken methods in these exceptions