I think the best way to handle the clipboard is to make it an SPDocument in its own right. When object(s) are copied to the clipboard, we should:
1. compile a list of objects and their dependencies (eliminating duplicates -- see DependencyTracking) 2. clear the clipboard SPDocument 3. use some (currently unwritten) facility for bulk-copying SPObjects (see BulkObjectCopy) between documents with references intact to copy the object list to the clipboard document
When pasting, we just use the same bulk object copy facility to copy from the clipboard SPDocument to the destination document (which may or may not be the origin document).
Question: should we handle SPUse specially?
Eventually, we should look at things like taking advantage of e.g. StockLibraryInterface to avoid creating unneeded duplicates of things like referenced gradients when pasting into the same document. But that's icing.
There's a user-visible behavior page now under ClipboardBehavior