iscsi: Fix leak of task->data

Steps to reproduce: In initiator, dd to the volume and bring the initiator
interface up and down repeatedly. Valgrind of tgtd confirms the leak and
the fix.

If a connection is terminated while tasks are not yet fully received,
task->data will have been allocated but not referred to by a cmd in-
or out-buffer, which happens in iscsi_target_cmd_queue only after the
entire command is received. When freeing tasks for a closed connection,
ensure task->data is freed if it isn't already freed by the pointer
having been copied to scmd in or out buffer.

It might be nicer set task->data to NULL when its reference is copied,
and then we could unconditionally call free() on it in iscsi_free_task,
but task->data is referred to in many other places in iscsid.c. Maybe
those places should refer to the in/out buffers instead?

Reported-by: Tomoaki Nishimura <t-nishimura@hf.jp.nec.com>
Signed-off-by: Andy Grover <agrover@redhat.com>
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>