message: require BufRead instead of just Read
  this is because we might be able to do the following with the received bytes:
  * not consume it all (i.e. be able to point the origin of an error in the stream)
  * some algorithm needs to have a Buffered inputs;
diff: @@ -203,7 +203,7 @@ pub trait Serializable: Sized {
  fn serialize<W: std::io::Write>(&self, writer: W) -> Result<(), Self::Error>;
  - fn deserialize<R: std::io::Read>(reader: R) -> Result<Self, Self::Error>;
  + fn deserialize<R: std::io::BufRead>(reader: R) -> Result<Self, Self::Error>;
  }
  #[cfg(feature = "property-test-api")]
  