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.
This is an area to collect information about how the clipboard is currently behaving, and how it's not meeting expectations in different instances. It's time to get the clipboard cleaned up nice, so we'll need to know all the instances that users might need us to address.