message: Have importwallet use ImportPrivKeys and ImportScripts
  Behavior changes:
  * An "Importing ..." line is logged for every key, even ones that are skipped
diff: @@ -656,18 +656,18 @@ UniValue importwallet(const JSONRPCRequest& request)
  CPubKey pubkey = key.GetPubKey();
  assert(key.VerifyPubKey(pubkey));
  CKeyID keyid = pubkey.GetID();
  - if (pwallet->HaveKey(keyid)) {
  - pwallet->WalletLogPrintf("Skipping import of %s (key already present)\n", EncodeDestination(PKHash(keyid)));
  - continue;
  - }
  +
  pwallet->WalletLogPrintf("Importing %s...\n", EncodeDestination(PKHash(keyid)));
  - if (!pwallet->AddKeyPubKey(key, pubkey)) {
  +
  + if (!pwallet->ImportPrivKeys({{keyid, key}}, time)) {
  + pwallet->WalletLogPrintf("Error importing key for %s\n", EncodeDestination(PKHash(keyid)));
  fGood = false;
  continue;
  }
  - pwallet->mapKeyMetadata[keyid].nCreateTime = time;
  +
  if (has_label)
  pwallet->SetAddressBook(PKHash(keyid), label, "receive");
  +
  nTimeBegin = std::min(nTimeBegin, time);
  progress++;
  }
  @@ -675,24 +675,19 @@ UniValue importwallet(const JSONRPCRequest& request)
  pwallet->chain().showProgress("", std::max(50, std::min(75, (int)((progress / total) * 100) + 50)), false);
  const CScript& script = script_pair.first;
  int64_t time = script_pair.second;
  - CScriptID id(script);
  - if (pwallet->HaveCScript(id)) {
  - pwallet->WalletLogPrintf("Skipping import of %s (script already present)\n", HexStr(script));
  - continue;
  - }
  - if(!pwallet->AddCScript(script)) {
  +
  + if (!pwallet->ImportScripts({script}, time)) {
  pwallet->WalletLogPrintf("Error importing script %s\n", HexStr(script));
  fGood = false;
  continue;
  }
  if (time > 0) {
  - pwallet->m_script_metadata[id].nCreateTime = time;
  nTimeBegin = std::min(nTimeBegin, time);
  }
  +
  progress++;
  }
  pwallet->chain().showProgress("", 100, false); // hide progress dialog in GUI
  - pwallet->UpdateTimeFirstKey(nTimeBegin);
  }
  pwallet->chain().showProgress("", 100, false); // hide progress dialog in GUI
  RescanWallet(*pwallet, reserver, nTimeBegin, false /* update */);
  