Implement FTP backend and other code cleanups.
Details:
- Fix a race condition in setup of RemoteStore: The backup_script was
set *after* a thread was already started. Sometimes this lead to a
segfault because the thread tested the backup script twice. During the
first test the variable wasn't yet defined while in the second test it
was -- this lead to a segfault due to an uninitialized output file.
I've move the backup_script to the constructor as an optional
parameter.
cumulus-util:
- put all command-documentation into docstrings of respective function
- add the docstrings to the usage text, so that we know which commands
exist
- Fix hard-coded extension '.tar.gpg' for cmd_list_snapshot_sizes
- framework for automatically computing the right method to call for a
given command
python/cumulus/store/file.py:
- fix constructor so that we can directly call it when it's not called
via the factory with an URL as parameter
- for NotFoundError give type and filename
python/cumulus/store/ftp.py:
- new FTP backend