message: add certificate fee algorithm
diff: +use crate::certificate::Certificate;
  use crate::transaction as tx;
  use crate::value::Value;
  use chain_addr::Address;
  @@ -41,3 +42,15 @@ impl FeeAlgorithm<tx::Transaction<Address, tx::NoExtra>> for LinearFee {
  Some(Value(fee))
  }
  }
  +
  +impl FeeAlgorithm<tx::Transaction<Address, Certificate>> for LinearFee {
  + fn calculate(&self, tx: &tx::Transaction<Address, Certificate>) -> Option<Value> {
  + let msz = (tx.inputs.len() as u64).checked_add(tx.outputs.len() as u64)?;
  + let fee = self
  + .coefficient
  + .checked_mul(msz)?
  + .checked_add(self.constant)?
  + .checked_add(self.certificate)?;
  + Some(Value(fee))
  + }
  +}
  