Rework the transaction completion/aborting in the ftp code to fix bug 1592
The main problems in the code were:
* fwd->complete() was being called more than once
* everything was being funned through transactionComplete() which just
wouldn't call abort handlers in the case of an abort.
So, transactionAbort() will call comm_close() to properly kill the
transaction the squid-2 way. this is ugly and should be replaced by some
object state to indicate the connection has been closed and the object
is on its way out; the current way will end up deleting the class data
before the code stack is fully unwound!
transactionForwardComplete() is just a wrapper that makes sure fwd->complete()
is called -once-.