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://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.
archive: add RecursiveArchive class

New class for transparent support of archives within archives.
archive tools: add get_recursive_archive_handler
extractor: add support for archives within archives
file handler: drop support for archives within archives

Code is not needed now that it's handled by the extractor.
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
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.
move listing archive contents to a background thread

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