[PLAT-4947] make add() throw exception, add component factories

Added one enhancement after speaking with Tim and Jon. Calling add()
will now throw an UnsupportedOperationException because we have a
chicken and egg of not having a scheme/unique id on the new document
before calling add().
So the caller will either have to hang on to a reference to the
delegate and use that to insert a document, or they can use a public
convenience method that I added to the new masters that takes scheme
as an argument along with the new document. This convenience function
(like register() and deregister() is not part of the Master interface,
so a reference to the actual concrete type will be necessary.
The associated component factories register both against the generic
Master interface and against the specific concrete types for this reason.