safety check, avoid releasing blocks marked as shared
simplify detach routine for listeners

a recent commit was required to handle a lag case but was a simple hack really, the
routine has become more complicated than it needed to be, it only needs to make sure
it detaches from the queue, usually a NULL setting in the client but if there is a
partial block written then we need to complete it so copy what there is and mark it
as an intro content block.  If there are already intro content blocks then they will
not be marked as shared and we should keep them for now.

obviously to prevent leaks, the listener release routines in fserve and source need
to release any none shared blocks that the client may have.