pub fn collate_samples(samples: Vec<Sample>) -> Result<Sample>
Stack a batch of samples field by field.
Every sample must have the same fields; a mismatch is an error rather than a silently dropped column.