Slight tweak to paste logic to eliminate unnecessary operations

As pasting occurs within an existing paragraph, multi-line text only
requires one split paragraph op per newline AFTER the first line. This
allows the logic to be simplified, removing the need for the remove op
completely.
Merge pull request #588 from peitschie/paste-tweak

Slight tweak to paste logic to eliminate unnecessary operations
Update webodf/lib/manifest.json: gui.PlainTextPasteboard does not need ops.OpRemoveText any more.
Add operation test showing steps cache update issue

Steps are rather arcane as they were discovered using a fuzzer (Bella).
Add additional asserts to verify cache integrity

Add asserts to detect cache corruption of the nature experienced here.
These more stringent checks have caused an additional operation test to
fail.
Ensure each bookmark is only present ONCE in the step-to-DOM point cache

Allowing the same bookmark to appear multiple times in this particular cache
causes major headaches when the bookmark is updated, as EACH step-to-DOM (s2D)
entry pointing to the bookmark would also need to be updated.

As there is no real performance benefit from having the same bookmark
appear multiple times, life is made significantly simpler by only allowing
the bookmark to appear a maximum of once in the s2D cache.
Merge pull request #578 from peitschie/cache-fix

Ensure each bookmark is only present ONCE in the step-to-DOM point cache
Add signalling for metadata changes to OdtDocument
and the Editor.
Add methods setMetadata and getMetadata to Editor.