Bitswap rounds

This PR implements the first revision of 'Bitswap Rounds' as defined by @jbenet in issue #417 
When running all the tests, if you dont shutdown sessions between tests, the goroutines associated with them will continue to run, slowing down the rest of the tests. so with `go test ./...` i had around 600 bitswap instances running in the background while dht tests were happening.

The Stop method is used to cancel the context associated with the SessionGenerator in order to kill those bitswap instances.