* Notify collators about seconded collation
This pr adds functionality to inform a collator that its collation was
seconded by a parachain validator. Before this signed statement was only
gossiped over the validation substream. Now, we explicitly send the
seconded statement to the collator after it was validated successfully.
Besides that it changes the `CollatorFn` to return an optional result
sender that is informed when the build collation was seconded by a
parachain validator.
* Add test
* Make sure we only send `Seconded` statements
* Make sure we only receive valid statements
* Review feedback
* start graphing message flow between subsystems
This commit includes messages originating from the first three subsystems
(alphabetically).
* use standard arrowhead names
* add messages from bitfield distribution && use circo layout
* finish adding all subsystem message traffic to graph
* reduce line spam
* start work on graphing v1 types
* finish graphing candidate-related structs
* show hash relations, format
* show provenance of ValidityAttestation
* add the rest of the v1 polkadot primitives
* add type diagram from polkadot::parachain::primitives
* start work digramming the path to backing
* diagram message flow from collation generation -> candidate selection
* document flow through CandidateBacking, CandidateValidation
* graph data flow through StatementDistribution
* trace data flow through PoVDistribution to Backing
* finish documenting node side subsystem data flow