make the async API non-blocking

one test is still failing and the change was kind of massive so
more tests are necessary before merging to master
some more debug messages and minor cleanings
thread safety when using the non_blocking api

access to the iomux used in the async-io thread needs to be protected with a mutex
so that new readers won't try adding filedescriptors while it's being run

also minor fixes when trying to access obj->len after releasing the the obj->lock mutex
indentation was screwed up someway
ensure going ahead with the iteration

returning 0 in the iterator callback would stop it
updated dependencies
updated TODO