Bunch of <pre> related fixes

1. Updated <pre> sep constraints in serializer
   Fixes bug 57276

2. Since selser now expects trailing newlines to not
   be part of DSR (see 8fa522eb), updated trailing newline
   stripping handler to strip trailing newlines from
   indent-pre nodes as well. It is safe to do so since
   empty newlines cannot be represented as indent-pre
   in wikitext anyway.

3. Update <pre> serializer to not add leading space
   on comment-and-ws-only "empty lines". Those lines
   get through the parser without being transformed
   by any handlers. So, PreHandler will not add a leading
   space on those lines. So, serializer should not add
   a space on those lines either.

4. Double-newline normalization was being applied to
   <pre> content as well which caused newlines in indent-pre
   to get stripped (bug 50906). This patch fixes that.
   The "<pre>a\n\nb</pre>" was an edge case that accidentally
   worked.

   Updated existing whitespace tests and added new tests
   to document correct behavior and prevent regressions.

Parser test results
-------------------

* Added new parser test for bug 57276 (which now passes html2wt)
  - html2html fails the more complex case because of
   differences in newline handling -- not important.

* One additional html2html test now passes as well.

* Because of fixes 2 and 3, six additional selser tests
  now pass.

Unrelated cleanup
-----------------
* Cleanup in HTML5TreeBuilder
  (from https://gerrit.wikimedia.org/r/#/c/98852/)

* Cleanup in WikitextSerializer
  (from https://gerrit.wikimedia.org/r/#/c/98982/)

BUG: 50906
BUG: 57276
Change-Id: I24ff084301d7f188e0d64a7034659193fa20ae34