message: Improve worst-case behavior of CScript::FindAndDelete
  Thanks to Sergio Lerner for identifying this issue and suggesting this kind of solution.
diff: @@ -571,17 +571,26 @@ public:
  int nFound = 0;
  if (b.empty())
  return nFound;
  - iterator pc = begin();
  + CScript result;
  + iterator pc = begin(), pc2 = begin();
  opcodetype opcode;
  do
  {
  + result.insert(result.end(), pc2, pc);
  while (static_cast<size_t>(end() - pc) >= b.size() && std::equal(b.begin(), b.end(), pc))
  {
  - pc = erase(pc, pc + b.size());
  + pc = pc + b.size();
  ++nFound;
  }
  + pc2 = pc;
  }
  while (GetOp(pc, opcode));
  +
  + if (nFound > 0) {
  + result.insert(result.end(), pc2, end());
  + *this = result;
  + }
  +
  return nFound;
  }
  int Find(opcodetype op) const
  