Support for non blocking

Major changes:

- adds aditional non blocking function to the xively api
- changes the way that the io switches between reading and writing ( so it's easier to handle of non blocking communication ) 
- adds non blocking step-by-step processing function that has to be called whenever io is ready to perform operations