multi: when leaving for timeout, close accordingly

Fixes the problem when a transfer in a pipeline times out.
multi: make multi_runsingle loop internally

simplifies the use of this function at little cost.
multi_runsingle: rename result to rc

save 'result' for CURLcode types