Implement queued transfer management (Issue #569)
This MR tries to fix freezing and crash mentioned in #569 (closed) by implementing queued transfer properly.
Queued transfer was previously done by launching the job first and freezing the job until the conditions are met. This method is easier to implement because parallel transfer and queued transfer can be handled the same way by this method. But since this might be the cause of the bug mentioned in #569 (closed), this should be done correctly.