Allow use of kb.KB with 'with' statement
Make sure several KB can be created in the same application

ie, keep the list of channels for each KB private.
Retry reading the connect on EAGAIN error

Related to asyncore bug http://bugs.python.org/issue16133