Bug 50603, 50589: Handle |{{echo|{{!}} Foo}}

* Add a DOM post-processor pass that fixes the handling of this test case:

  {|
  |{{echo|{{!}} Foo}}
  |}

  The first td is removed and the appropriate adjustments to the
  transclusion-generated td are performed (DSR adjustment, data-mw updates).

* Also add two test cases to verify wt2html, wt2wt and html2wt modes.

* Change the serializer behavior for
  <table><!-- --><tr><td>bar</td></tr></table> to default in

  {|
  <!-- -->|bar
  |}

  instead of

  {|
  |-
  <!-- -->|bar
  |}

  This fixes a few selser tests, but adds some failures as well. Overall it
  does seem to be a win though and leads to cleaner wikitext output.

Limitations:

* This does not work yet for content nested inside a template, as DOM
  postprocessor passes we rely on (auto-inserted end tag detection, template
  encapsulation) are not enabled for that content. We'll have to come up with
  a better way to detect the auto-inserted end tag followed by template
  generating a td situation.  This means that bug 50589 is not fixed yet. The
  chart table in http://en.wikipedia.org/wiki/5_O%27Clock_%28T-Pain_song%29
  does not render correctly yet as that is in turn wrapped into a multi-column
  template. A version without the multi-column wrapper template at
  http://en.wikipedia.org/wiki/User:GWicke/ChartTableTest however works fine now.

* This fixes the first (and easier) part of bug 50603 which covers most of bug
  50589. The second part of bug 50603 is still TODO.

Bug: 50603
Bug: 50589

Change-Id: Ibb3fbfdaf71d2242d9b7c6ca0d9f1ab29f56e616