Improved the description of exception classes
Added getOuterHtml
Merge pull request #515 from stof/outer_html

Added getOuterHtml
Merge pull request #514 from stof/exception_descriptions

Improved the description of exception classes
Added a test covering the error case for getOuterHtml

Refs #515
Refactored the rendering of expectation exceptions to avoid duplication
Made ElementNotFoundException extend from ExpectationException
Removed the ElementAttributeException in favor of ElementHtmlException

The string rendering of ElementAttributeException is broken because it
does not pass the attribute name when calling getAttribute.
Given that ElementHtmlException now tries to display the outer HTML as
context when supported, it is good enough to debug the attribute errors as
well.
Moved the string rendering utilities to the ExpectationException

Thanks to ElementNotFoundException being an ExpectationException now, this
is the only place where they are used.
This avoids having broken utilities in other exception classes where the
Session was not set.
Added tests covering the exception string rendering
Changed the handling of drivers not supporting status code

This avoids hardcoding the list of excluded drivers in the
ExpectationException but relying on the UnsupportedDriverActionException
instead.
Removed the fallback from getOuterHtml to getHtml
Merge pull request #516 from stof/exception_improvements

Exception improvements
Refactored the WebAssert class to reduce the complexity
Adding test for `change` event fire count verification
Merge pull request #518 from aik099/495-single-change-event-verification

Adding test for `change` event fire count verification
Moved the XPath of the id selector to the NamedSelector
Merge pull request #524 from stof/named_id_selector

Moved the XPath of the id selector to the NamedSelector
Merge pull request #517 from stof/web_assert_refactoring

Refactored the WebAssert class to reduce the complexity
Changed the architecture of the driver testsuite

Instead of having all driver tests in a single abstract testcase becoming
so huge it is hard to maintain, the driver testsuite is now composed by a
set of concrete testcases and a config object to build the driver and
adapt the testsuite.
This makes the maintenance of the driver testsuite easier by having
smaller targetted testcases.
It also separates the driver testsuite from the Mink testsuite (required
now that testcases are not abstract anymore in the driver testsuite),
which will avoid confusion for contributors.