Improved dom-diff to deal with data-mw by recursing into object

1. This patch does not compare serialize data-mw strings anymore.
   It parses them into objects and then compares key-values which
   eliminates artificial diffs based on differences in serialization
   order of keys.

2. It treats 'html' attributes specially -- it parses them to DOM
   and compares trees (which lets its ignore ignoreable attributes
   like about ids).

This now fixes local dirty diffs seen in serialization when HTML
seen by VE and HTML seen by serializer are generated independently
with two parses where mwt ids and serialization order might be
different. This scenario should actually be rare in production, but
can eliminate dirty diffs even in the edge case where selser has a
cache miss in production. But, tolerance of different serialization
order of data-mw will nevertheless be useful (since it could simplify
VE's serialization code).

This patch also updates DOMUtils.attribsEquals to use a Set for
ignoreable attributes instead of an object.

Change-Id: I2393872622abaea433bc81cf8fdef5ade8ffe238
Merge "Improved dom-diff to deal with data-mw by recursing into object"