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://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://svn.code.sf.net/p/mcomix/code@1066 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive tools: add get_recursive_archive_handler

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

git-svn-id: svn://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://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://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://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://svn.code.sf.net/p/mcomix/code@1072 ef8490bc-f317-4725-81ed-e95a9aca1bcf
pdf: fix optimal dpi detection

The first 4 coefficients of the matrix must be taken into account,
since the image may be rotated...

git-svn-id: svn://svn.code.sf.net/p/mcomix/code@1073 ef8490bc-f317-4725-81ed-e95a9aca1bcf
worker thread: minor cleanup

Remove append_order unused 'sort' parameter.

git-svn-id: svn://svn.code.sf.net/p/mcomix/code@1074 ef8490bc-f317-4725-81ed-e95a9aca1bcf
extractor: add debug traceback on exception

git-svn-id: svn://svn.code.sf.net/p/mcomix/code@1075 ef8490bc-f317-4725-81ed-e95a9aca1bcf
archive: fix support for archives within archives

Fix 'global' name to archive name handling, so entries from sub-archives
get correctly extracted.

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