Bitswap rounds

This PR implements the first revision of 'Bitswap Rounds' as defined by @jbenet in issue #417 
> Is there a handy reference sheet where I can easily see a list of errors a function could possibly return? That would be a great tool to have.

godoc. if it's not mentioned there, it's not in the public contract and probably shouldn't be relied upon.