Fix preservation of foreign elements on paragraph merge

This behaviour was working prior to the merge paragraph operation being introduced. A new edge case was introduced related to cleaning up empty spans that caused this to regress.
"Real garbage collector" surely is a nice concept. But... there is no massive gain to the separation at this point.

This operation is already moving large chunks of the document around at this point, and the op already has cleanups that must occur (e.g., the removal of extraneous whitespace near paragraph boundaries) in order for the merge to succeed.

At this particular junction, the garbage collection problem feels significantly wider than this operation, as any half-decent design should also account for:

* Unused binary blobs
* Unused automatic styles
* Possibly unused named styles
* etc.

The garbage collector would also have to be written cleverly enough to not become a large performance bottleneck.

Definitely not averse to the idea... but I would see that as significant feature-creep beyond the initial goals of this PR :-)