A whole bunch of separator handling fixes.

* Tweaks to P-separator constraints and LI-separator constraints.

* Tweaks to separator newline gathering code to ignore nodes that
  generate sol-transparent wikitext.

* Fixes to separator extraction/buffering for text nodes:
  - Only newlines were being extracted before this patch.
  - Spaces and tabs are also extracted now.

* Fixed emitSeparator:
  * To not use original source separators in
    - non-selser edit mode
    - selser edit mode when subtree is marked 'completely modified'

* Extracted leading whitespace suppression code out of makeSeparator
  into its own 'makeSepIndentPreSafe' method which is now
  call on all separators in emitSeparator (whether from source or
  built from constraints).

* Several changes to makeSepIndentPreSafe to more accurately deal
  with leading whitespace (and suppress/ignore such whitespace
  based on whether indent-pres will be generated or not).
  This code now handles a wider range of generic HTML than before.

  Added or updated parser tests to trigger new HTML scenarios
  plus new separator handling scenarios.

* Minimized noise from incompatible constraints error output.

* Currently,
  - 5 additional html2wt tests are passing.

  - 3 wt2wt tests are failing.
    * Failures because of suppression of harmless SOL whitespace
      in makeSeparator. Fixing this requires lookahead and
      more complex smarts. That complexity is not warranted since
      the diffs are mosty syntactic and selser takes care of the
      common (unedited) case.

  - Net additional 58 (-5, +63) selser tests are failing:
    * Failing tests associated with the 3 failing wt2wt tests.
    * Failing tests because selser is more accurate than wt2wt ("Fuzz testing")
    * Failing tests with insignificant diffs between wt2wt and selser
      wrt whether a comment after a table tag is emitted before the newline
      or after the newline ("Table security: embedded pipes").

History of the patch below
--------------------------
* Investigating the problem reported in 'bug 50756' revealed that
  a separator was being used from source incorrectly when there was
  an intervening mw:DiffMarker tag that indicated deleted content.

* A "simple" fix for this bug triggered a whole slew of related
  fixes because of a large number of selser changes from the fix.

* In turn, I discovered that non-selser wt2wt was using source
  based separators incorrectly in edit-mode which would re-render
  deleted separators. Reproducible as follows (with patches older
  than this one).

------------------------------------------------------------------------
$ echo "'''foo''' <ref>bar</ref>\n\n<references />" > /tmp/wt
$ node parse --fetchConfig false --extensions ref,references < /tmp/wt > /tmp/old.html
$ sed 's/foo<\/b> <span/foo<\/b><span/g;' < /tmp/old.html > /tmp/new.html
$ node parse --html2wt --oldtextfile /tmp/wt < /tmp/new.html
'''foo''' <ref>bar</ref>

<references />
------------------------------------------------------------------------

* Fixing this in turn trigger a whole bunch of wt2wt and related
  selser failures because 'makeSeparator' was now being invoked
  in pretty much every scenario which uncovered hitherto hidden
  bugs in its indent-pre suppression.

* Fixing those failures required making that code more robust and
  letting it handle more forms of generic HTML.
  Ex: "<ul> <li>foo</li><ul>"

  This also lets us get rid of some hacks in parser tests to get
  around serializer deficiencies (see changes to parser tests
  and deletion of 'Wacky' comments).

* In turn, working through all these resulted in a slew of fixes
  in master. This patch is the last patch in that series.

BUG: 50756

Change-Id: I5ae1234c4419305ae048ebaa2183c011b5af3f22
Merge "A whole bunch of separator handling fixes."