Revert OperationFactory interface changes made in a1f86ac

By specifically invoking a new when creating an operation instance
makes it quite difficult for external operation constructors, as there
is no easy way for external ops to share non-document state.

All WebODF ops don't have this issue as new functions can easily be
added to the OdtDocument interface to support the new requirements.
Merge pull request #464 from peitschie/opfactory-tweak

Revert OperationFactory interface changes made in a1f86ac
Meet Bella. She will destroy your documents.

* Supports multiple instances in the same doc
* Able to exercise entire selection controller
* Can say meow (and other text manipulation actions)
Using a real SessionController causes problems with double-events
Extend Bella's functionality

* Knows  about undo & redo
* Will also destroy your document formatting too!
* Can cut, copy & paste
* Bella is a tidy cat and likes valid documents
* Bella can be hooked up to use an existing cursor
* Custom actions to be loaded externally
* Has AMD integration
Add workaround for crashing TrivialUndoManager bug

TODO - raise an issue about this!
Add checks to ensure the cursor is in a valid step

Issue highlighted in review of PR #451.
Add a seeded random number generator to allow reproduction of crashes

Original source: https://github.com/davidbau/seedrandom
Compilation fixups
Add some really simple reporting stats
Make seeding random by default
Allow seed to be specified via URL
Compilation fixes
Add an "auto drive" feature (the cat herder)

Auto drive will automatically cycle the page after the specified
number of pounces. If an unhandled exception occurs, it will PUT a
file to the server in the same location that contains the number of
pounces that happened, and the original seed, along with the error
information.
Disable alerts and throw a proper error on assert
Better encapsulate config-via-url behaviours
Add replay hooks
Ensure document length changes by expected amounts during validation