inkscape:collect="always" - reap the object as soon as it is orphaned; this should only be used for objects that the user never sees directly (e.g. chained gradients which do not show up in the gradient list)
Yes, same as now
inkscape:collect="manual" - reap the object if it is orphaned and the user explicitly invokes "discard unused" command (bulia can probably think of a better name); this should get used for inkscape-created objects which do not appear directly on the canvas
inkscape:collect="with-parent" - the default if unspecified; the object is only reaped if its parent gets reaped -- if the user wants to get rid of it, they can delete it using the XML editor, or the "delete" action in whatever specialized dialogs the object appears in
Why do we need these? We can simply designate a list of element types which belong to "manual" (e.g. marker, gradient etc), otherwise consider them "with-parent". This way no extra attributes will be necessary.