Apply merged paragraph styles using OpSetParagraphStyle (+cleanup)

Reduce the complexity within the remove text operation and push it up to the controller instead.

This PR also starts laying some groundwork for the forthcoming merge paragraph op. There are no major logic changes, but some necessary cleanups (and tests to ensure no regression).