message: Stop using string::replace.
  In an earlier change I used string::replace, but looking at the string::replace API it feels that it is a little bit weird. Let's try to avoid it.
diff: @@ -69,16 +69,13 @@ util::StatusOr<std::unique_ptr<Aead>> AesGcmBoringSsl::New(
  util::StatusOr<std::string> AesGcmBoringSsl::Encrypt(
  absl::string_view plaintext, absl::string_view additional_data) const {
  - const std::string iv = Random::GetRandomBytes(IV_SIZE_IN_BYTES);
  - std::string result;
  - result.resize(iv.size() + plaintext.size() + TAG_SIZE_IN_BYTES);
  - result.replace(0, iv.size(), iv);
  + std::string result = Random::GetRandomBytes(IV_SIZE_IN_BYTES);
  + result.resize(IV_SIZE_IN_BYTES + plaintext.size() + TAG_SIZE_IN_BYTES);
  size_t len;
  - char* target = &result[iv.size()];
  if (EVP_AEAD_CTX_seal(
  - ctx_.get(), reinterpret_cast<uint8_t*>(target), &len,
  - plaintext.size() + TAG_SIZE_IN_BYTES,
  - reinterpret_cast<const uint8_t*>(iv.data()), iv.size(),
  + ctx_.get(), reinterpret_cast<uint8_t*>(&result[IV_SIZE_IN_BYTES]),
  + &len, plaintext.size() + TAG_SIZE_IN_BYTES,
  + reinterpret_cast<const uint8_t*>(&result[0]), IV_SIZE_IN_BYTES,
  reinterpret_cast<const uint8_t*>(plaintext.data()), plaintext.size(),
  reinterpret_cast<const uint8_t*>(additional_data.data()),
  additional_data.size()) != 1) {
  