Bitswap rounds

This PR implements the first revision of 'Bitswap Rounds' as defined by @jbenet in issue #417 
this allocation is naive. it says take total bandwidth and divide evenly between all peers. if i have a ton of peers, my bandwidth may not be enough to fill even a single block. 

a better way to do this is: come up with an abstraction of value generated per-peer-per-block. for now -- a naive choice -- is the same P(send) probability (which is a function of the debt ratio).

```
generate list [ (peer, block, valueToMe(peer, block) ) ] 
sort by valueToMe

remainingBW = availableBW
output = []
for _, entry := range list {
  if remainingBandwidth < len(entry.block) {
    continue
  }
  
  output = append(output, entry.block)
}
```