Polyfill Node.prototype.normalize in IE

There is a bug in IE11 where normalization sometimes leaves
empty text nodes behind. Additionally, there is a bug that
I don't quite understand where .normalize() won't combine
adjacent text nodes in dm.Converter output, but the same
DOM generated by hand normalizes fine, and a clone of the
converter DOM also normalizes correctly. I haven't been able
to isolate this bug, but I have seen enough that I don't
trust IE's .normalize() at all.

Add ve.normalizeNode() which wraps node.normalize(). Check
whether the native implementation is broken using the empty
text node case, and if it is, bypass the native implementation
completely and perform normalization manually.

Tests:
* Add ve.test.utils.buildDom() to build a DOM structure
  from a JSON description
* Add tests for ve.normalizeNode()
** The test suite triggers the manual normalization code
   by making the native .normalize() a no-op
* Stop excluding text nodes in ve.getDomElementSummary(),
  otherwise you get no useful output if the normalize test
  fails because of empty text nodes

Change-Id: I809632a985400494085a706ff07278e639f698c0
Merge "Polyfill Node.prototype.normalize in IE"