Unchoke/Choke algorithm from BEP 003

This need review.

~~Does something `.choke()` peers outside of torrent-stream? I have the impression that some peers go back to being choked without any action by `onrechoke()`. Mostly because testing show choked peers, while `.choke()` was broken. Something about `peer.wasChoked != peer.isChoked` seems weird too, like `peer.wasChoked` going back to true.~~ (Seems to work as intended after all)

Also what is the proper way to pause / resume torrent-stream? Peerflix calls `engine.swarm.pause()`, bypassing torrent-stream layer. `onrechoke` interval should probably be canceled at the same time.