core: Miscellaneous transfer timeout improvements
* When removing a transfer from the flying_transfers list, only
rearm the timerfd if the transfer being removed was the first
transfer *and* had a timeout. This is the only case where the
timerfd should be altered by a transfer being removed.
* When searching the flying_transfers list for the next timeout,
searching can cease when the first transfer with an infinite
timeout is encountered.
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>