Bitswap rounds

This PR implements the first revision of 'Bitswap Rounds' as defined by @jbenet in issue #417 
better to use `err != nil` here. u.ErrNotFound isn't actually related to blockstore

because we know the implementation of blockstore, we know that both of them currently use the `ds.ErrNotFound` but it's not part of the blockstore contract.