basically the issue was that the main loop received the SIGINT
and therefore broke out before reaching the parts of the code
that care about bringing down the child threads.
therefore there's now a finish() method that needs to be called
after stop().
because sqlite dbs insists to be used from the thread that created
the object, the DB cleanup operation are done from the thread
that controls it.
for standalone operation, in order to keep the main thread alive,
an additional run() method is used. this is not necessary when
used via ppf.py.
this variable determines after how many results the db is written to.
with a low value, it is written often and could more lock issues
if 2 threads concur for the db.
now it distributes the tasks properly among all threads,
and it can be used as a standalone program.
there are some minor performance issues which will be fixed shortly.
all protos (http, socks4, socks5) were tested even for working proxies (whose protocol has been saved..)
also, don't save dummy 'http' protocol for non working proxies..