message: Have importprivkey use CWallet's ImportPrivKeys, ImportScripts, and ImportScriptPubKeys
  Behavior changes:
  * If we already have the key, it's wpkh script will still be added, although it should already be there
diff: @@ -187,19 +187,15 @@ UniValue importprivkey(const JSONRPCRequest& request)
  }
  }
  - // Don't throw error in case a key is already there
  - if (pwallet->HaveKey(vchAddress)) {
  - return NullUniValue;
  + // Use timestamp of 1 to scan the whole chain
  + if (!pwallet->ImportPrivKeys({{vchAddress, key}}, 1)) {
  + throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
  }
  - // whenever a key is imported, we need to scan the whole chain
  - pwallet->UpdateTimeFirstKey(1);
  - pwallet->mapKeyMetadata[vchAddress].nCreateTime = 1;
  -
  - if (!pwallet->AddKeyPubKey(key, pubkey)) {
  - throw JSONRPCError(RPC_WALLET_ERROR, "Error adding key to wallet");
  + // Add the wpkh script for this key if possible
  + if (pubkey.IsCompressed()) {
  + pwallet->ImportScripts({GetScriptForDestination(WitnessV0KeyHash(vchAddress))});
  }
  - pwallet->LearnAllRelatedScripts(pubkey);
  }
  }
  if (fRescan) {
  