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