implement custom "chunksize" similar to m.imap's

use customized "chunksize" similar to multiprocessing.imap, but faster;
refactor the main password generators to remove code duplication;
improve feedback when performing certain long-running tasks;
new unit tests;
minor bug fixes and new warnings