Implement OpMergeParagraph 

In order to improve the OT-ability of text and paragraph removal with other operations, the merge behaviour has been extracted.

The logic for building up the necessary remove operations has been encapsulated in TextController for now as all uses pass through this point still.

Some important concepts in this patch:

* Paragraphs are effectively identified by their start position. This means that all paragraph-related operations (SetParagraphStyle, SplitParagraph) will need to also specify the start position of the paragraph being impacted as well in order to allow OT.
* Text remove operations are expected to be constrained to within a single paragraph (though it can include inline roots within the paragraph such as annotations).
This does not take into account the fact that merging also changes the style.

What then happens is that client A, which has already merged the paragraphs, gets a split operation and the resultant two paragraphs have the same style as the destination paragraph.
Client B, which has performed the split first, merges the first 'daughter' of the split to the destination paragraph, thus resulting finally in two paragraphs, the first with the style of the destination, and the second with the style of the source.

![divergence](https://cloud.githubusercontent.com/assets/591038/3257839/1203ab58-f232-11e3-9a88-6a374e141e0b.png)


Somehow I prefer that Client B's outcome would win, seems more natural. This would require you to generate a fixup `SetParagraphStyle` operation for the second daughter of the split.