Fix Handling of DOMNodes in assertions

The current Comparator code can only handle complete DOMDocuments. When passing DOMNodes to assert*(), the object comparator will be used which does not work as expected with this type.

This PR includes a replacement for the DOMDocument Comparator as technically a DOMDocument is also just a DOMNode and the implementation by Bernhard Schussek could almost handle both.

I also implemented support for the optional case-insensitive switch.