Fix `<br>` support

This adds a working implementation of `<br>`, though as discussed in links found at #2362, this pure CSS implementation is not 100% interoperable with existing implementations.

This fixes two problems with the version previously in the UA stylesheet:

* Servo doesn't yet support the `whitespace: pre-line` value.  Fixed by using `pre` instead.
* Pseudo-elements lose their `whitespace` values if merged with other text fragments.  Fixed by preventing merging when `whitespace` differs.

I'm not sure whether the second item points to broader changes needed in `Fragment::can_merge_with_fragment`.