message: rpc: Add parent descriptor to getaddressinfo output
  Adds parent_desc field to getaddressinfo output which contains the
  descriptor that was used to derive the address if it is available.
diff: @@ -3856,6 +3856,7 @@ RPCHelpMan getaddressinfo()
  {RPCResult::Type::BOOL, "iswatchonly", "If the address is watchonly."},
  {RPCResult::Type::BOOL, "solvable", "If we know how to spend coins sent to this address, ignoring the possible lack of private keys."},
  {RPCResult::Type::STR, "desc", /* optional */ true, "A descriptor for spending coins sent to this address (only when solvable)."},
  + {RPCResult::Type::STR, "parent_desc", /* optional */ true, "The descriptor used to derive this address if this is a descriptor wallet"},
  {RPCResult::Type::BOOL, "isscript", "If the key is a script."},
  {RPCResult::Type::BOOL, "ischange", "If the address was used for change output."},
  {RPCResult::Type::BOOL, "iswitness", "If the address is a witness address."},
  @@ -3931,6 +3932,14 @@ RPCHelpMan getaddressinfo()
  ret.pushKV("desc", InferDescriptor(scriptPubKey, *provider)->ToString());
  }
  + DescriptorScriptPubKeyMan* desc_spk_man = dynamic_cast<DescriptorScriptPubKeyMan*>(pwallet->GetScriptPubKeyMan(scriptPubKey));
  + if (desc_spk_man) {
  + std::string desc_str;
  + if (desc_spk_man->GetDescriptorString(desc_str, false)) {
  + ret.pushKV("parent_desc", desc_str);
  + }
  + }
  +
  ret.pushKV("iswatchonly", bool(mine & ISMINE_WATCH_ONLY));
  UniValue detail = DescribeWalletAddress(pwallet, dest);
  