Run ftp uploads/deletes in parallel using one thread per server

Fixes #10

Squashed commit of the following:

commit ecb35378df97280b02bce8bb221a352a18035bc1
Author: Sebastian Röbke <sebastian.roebke@xing.com>
Date:   Mon Jul 1 15:41:12 2013 +0200

    Use threads in flush_deletes, too

commit af72b10be8648e641ec7cd3b20e09d04c9e84aa3
Merge: 66aa7dd 17c2a4b
Author: Sebastian Röbke <sebastian.roebke@xing.com>
Date:   Mon Jul 1 15:03:55 2013 +0200

    Merge branch 'master' into parallel

commit 66aa7dd4290dc6d21d86e5875c82effc35d8a166
Merge: 8e4b330 4cd2d18
Author: Sebastian Röbke <sebastian.roebke@xing.com>
Date:   Mon Jul 1 14:56:19 2013 +0200

    Merge branch 'master' into parallel

    Conflicts:
    	.gitignore

commit 8e4b330c6a623161a0dd51c0c5da01fbfd32a6f8
Merge: 02a5875 8d835c7
Author: Sebastian Röbke <sebastian.roebke@xing.com>
Date:   Mon Jul 1 14:52:30 2013 +0200

    Merge branch 'master' into parallel

commit 02a5875db03b220a2c1788821f6757483b63d366
Merge: 95db8fe 2cc12e1
Author: Sebastian Röbke <sebastian.roebke@xing.com>
Date:   Mon Jul 1 14:29:41 2013 +0200

    Merge branch 'master' into parallel

commit 95db8fef4738a45f0ab2f5a45d3ae484df44e1c3
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:39:43 2013 +0200

    Verify all attachment styles in integration test

    …and use better variable names

commit 946f29cfbeae03ac9b401c2546cbc23567b0ad96
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:27:57 2013 +0200

    Use one thread per server for parallel upload

    This could be improved even further by using a thread pool per server to upload multiple files to a single server in parallel. However, the sizes of the thread pools should be configurable to avoid ftp connection limit errors.

commit 22651ec46857e3b6c2480fd45234d2cd388ffc65
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:15:18 2013 +0200

    Avoid JRuby related Error::ECHILD errors when running tests

    https://github.com/thoughtbot/cocaine#jruby-caveat

commit 1189142d8a3422f5bb759c5a8af4e414ad39e372
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:14:20 2013 +0200

    Remove unnecessary file.close calls in test

commit 4edf0b908d785513f8e7dbe06cc3a14c44543cd7
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:13:52 2013 +0200

    Make sure to test uploaded file against original file size

commit 1984bb0bc15aff3b17e7a725ee6bb28fc48770a1
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 15:12:59 2013 +0200

    Better name for integration spec (in rspec output)

commit 159400b5073d610288e7fb5c8f1d08f5e352db00
Author: Sebastian Roebke <sebastian@sebastian-r.de>
Date:   Thu May 30 12:09:52 2013 +0200

    Extend integration tests to use multiple connections