Compile fixes for ll_list::unlink.
Handle delayed unlink in release function.

When a ll_list element becomes unlinked, the element is only marked
and the surrounding elements are updated to skip the element from
now on.  However since the element may still be in use, the pred/succ
pointers of the elements cannot be immediately cleared.

Instead of spinning in the unlink function, the zeroing is delayed
until the reference count of the element drops to zero (in which case
no-one is using that element and it is clearly not pointing at itself).
At this stage, the final operation in unlink is performed: relinking
the predecessor and successor pointers to the deleted element.

The only time this algorithm needs to spin, is:
- an element is inserted (after having been unlinked) while it is still
  in use,
- an element is destroyed while still in use.