Fixed the SelectorInterface to accept arrays as selector

The NamedSelector relies on getting an array, but the interface was not
allowing it.
Fixed typehints in several methods of WebAssert

Some methods were only relying on the interface and were typehinting the
implementation, and other methods were typehinting Element while they were
actually expecting TraversableElement.
Fixed access to undefined methods in exception classes
Moved the hasClass method from TraversableElement to NodeElement

Calling it on a DocumentElement would have triggered a fatal error because
its implementation relies on NodeElement methods.
Refactored the representation of the matching element in WebAssert

This reduces duplication of the logic needed to handle array selectors and
improves the exception message when the named selector is used.
Merge pull request #452 from stof/scrutinizer_fixes

Fixes based on Scrutinizer inspections
Prefer exact matches in the named selector

This uses the approach implemented by @bevanr in #386 but rebuilds it on
top of the latest Mink where the NamedSelector was changed a lot.
It also supports using the 'named' selector for findAll call, which was
not the case in the original implementation.