Gossipsub: Port unittests from other implementations
In order to gain confidence in our implementation, we should port the unit tests from other implementations like:
- go: https://github.com/libp2p/go-libp2p-pubsub/blob/56c0e6c5c9dfcc6cd3214e59ef19456dc0171574/gossipsub_test.go#L1
- typescript: https://github.com/ChainSafe/js-libp2p-gossipsub/blob/1e1cf5a7da13d2c451c217ce40968ef5c152ca9d/test/gossip.spec.ts#L1
- rust: https://github.com/libp2p/rust-libp2p/blob/master/protocols/gossipsub/src/behaviour/tests.rs