grandpa: send neighbor packets to light clients on set transition
As part of the GRANDPA gossip protocol peers exchange small messages (neighbor packets) to inform their peers on what is their local view of the GRANDPA protocol, i.e. what round and set id they are currently observing. This is then used by the gossip logic to avoid gossiping information that peers aren't interested in (either stale or future). Currently these neighbor packets aren't sent to light clients, the reasoning being that since light clients aren't following the full GRANDPA protocol (i.e. they just import commits to finalize blocks), they don't need to care about the state of the peers they are connected to. Still this information can be useful to light clients around validator set boundaries, since it allows light clients to make an informed decision on who to ask justifications from (if necessary), i.e. if I'm looking for a justification for a block that changes the set id from 1 to 2, then any peer that announces being on set id 2 (or higher) should be able to provide such a justification.
This PR changes the gossip logic to also send neighbor packets to light clients when transitioning to a new set. Additionally, the light client also gets a neighbor packet on the initial connection to the peer (this was already the case before this PR).
Related: https://github.com/smol-dot/smoldot/issues/239