message: Add instances of `ItemFetcher` for `Block(Header)`.
diff: @@ -15,7 +15,7 @@ use crate::{
  },
  protocol::Message,
  small_network::NodeId,
  - types::{Deploy, DeployHash, Item},
  + types::{Block, BlockHash, BlockHeader, Deploy, DeployHash, Item},
  utils::Source,
  GossipConfig,
  };
  @@ -198,6 +198,60 @@ impl ItemFetcher<Deploy> for Fetcher<Deploy> {
  }
  }
  +impl ItemFetcher<BlockHeader> for Fetcher<BlockHeader> {
  + fn responders(
  + &mut self,
  + ) -> &mut HashMap<BlockHash, HashMap<NodeId, Vec<FetchResponder<BlockHeader>>>> {
  + &mut self.responders
  + }
  +
  + fn peer_timeout(&self) -> Duration {
  + self.get_from_peer_timeout
  + }
  +
  + fn get_from_storage<REv: ReactorEventT<BlockHeader>>(
  + &mut self,
  + effect_builder: EffectBuilder<REv>,
  + id: BlockHash,
  + peer: NodeId,
  + ) -> Effects<Event<BlockHeader>> {
  + effect_builder
  + .get_block_header_from_storage(id)
  + .event(move |result| Event::GetFromStorageResult {
  + id,
  + peer,
  + maybe_item: Box::new(result),
  + })
  + }
  +}
  +
  +impl ItemFetcher<Block> for Fetcher<Block> {
  + fn responders(
  + &mut self,
  + ) -> &mut HashMap<BlockHash, HashMap<NodeId, Vec<FetchResponder<Block>>>> {
  + &mut self.responders
  + }
  +
  + fn peer_timeout(&self) -> Duration {
  + self.get_from_peer_timeout
  + }
  +
  + fn get_from_storage<REv: ReactorEventT<Block>>(
  + &mut self,
  + effect_builder: EffectBuilder<REv>,
  + id: BlockHash,
  + peer: NodeId,
  + ) -> Effects<Event<Block>> {
  + effect_builder
  + .get_block_from_storage(id)
  + .event(move |result| Event::GetFromStorageResult {
  + id,
  + peer,
  + maybe_item: Box::new(result),
  + })
  + }
  +}
  +
  impl<T, REv, R> Component<REv, R> for Fetcher<T>
  where
  Fetcher<T>: ItemFetcher<T>,
  