fix possible library errors on mcomix termination

When terminating mcomix with the library window still open, you
sometimes get a dead-lock and those errors:

16:06:22 [Thread-4-thumbview] ERROR: ! Worker thread processing [...] failed: Cannot operate on a closed database.

The fix is simple: make sure we close the library window before
terminating the library backend.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1064 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive: improve class interface

- add iter_contents generator to list contents
- replace extract_all by iter_extract generator

This is needed if the code to list an archive contents is to be moved
out of the main interface thread to prevent freezing the UI for too
long.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1065 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive: add RecursiveArchive class

New class for transparent support of archives within archives.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1066 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive tools: add get_recursive_archive_handler

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1067 ef8490bc-f317-4725-81ed-e95a9aca1bcf
extractor: add support for archives within archives

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1068 ef8490bc-f317-4725-81ed-e95a9aca1bcf
file handler: drop support for archives within archives

Code is not needed now that it's handled by the extractor.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1069 ef8490bc-f317-4725-81ed-e95a9aca1bcf
thumbnail tools: simplify and improve the code

Don't use the extractor: use archive_tools.get_recursive_archive_handler.

Rational:
- the extractor asynchronous interface and error handling mean it's
  possible to dead-lock if the cover cannot be extracted
- this make the code simpler

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1070 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive tools: don't use archive extractor

Change get_archive_info implementation to use RecursiveArchive
interface instead: next patch will change the archive extractor
implementation to asynchronously list the archive contents, so it
won't be usable anymore in this case.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1071 ef8490bc-f317-4725-81ed-e95a9aca1bcf
move listing archive contents to a background thread

This reduce lags in the UI, especially on archives containing archives.

git-svn-id: svn+ssh://svn.code.sf.net/p/mcomix/code@1072 ef8490bc-f317-4725-81ed-e95a9aca1bcf