refactor fctx_done() to set fctx to NULL
previously fctx_done() detached the fctx but did not clear the pointer passed into it from the caller. in some conditions, when rctx_done() was reached while waiting for a validator to complete, fctx_done() could be called twice on the same fetch, causing a double detach.
fctx_done() now clears the fctx pointer, to reduce the chances of such mistakes.
Closes #2969 (closed)
Edited by Evan Hunt