Take peer list out of struct io.

The peer list is totally io independent.
Rename struct peer member "list" to next_peer for more clarity.
Add peer that made the fetch to struct fetch.

This is required for notify the peer about state adds/removes/changes.
Add struct fetch to the list of fetchers of a peer.
Add stub function to remove all fetches from a state.
Implement function to remove all fetchers from a peer.

This function is required if a peer is destroyed.