Bitswap rounds

This PR implements the first revision of 'Bitswap Rounds' as defined by @jbenet in issue #417 
may want to allow this function to return and error and perform logging up in the event loop. That way we can change error handling without changing the method