Task: Fixes #8162 (rdkit/rdkit#8164)

org: rdkit
repo: rdkit
pr_number: 8164
issue_title: Fixes #8162
issue_body: Straightforward fix to make only conjugated double and single bonds match aromatic bonds
resolved_issues: number: 8162
title: Cyanamide incorrectly matches methyl-imidazole when aromaticMatchesConjugated is set
body: 

**Describe the bug**

Given the MOL 3000 query (cyanamide) and smiles target (methyl-imidazole) below an incorrect match is reported when `aromaticMatchesConjugated = True`.  Interestingly, this does not happen using the equivalent SMARTS pattern.

The behavior is observed in the 2024.09.04 Python release and also on C# wrappers built on 1/10/25

**To Reproduce**

```python
# %%
import rdkit
from rdkit import Chem
from rdkit.Chem import AllChem, Draw
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem.rdchem import SubstructMatchParameters
IPythonConsole.drawOptions.addAtomIndices = True
# %%
rdkit.__version__
# %%
block = """ACS Document 1996
  ChemDraw01092510212D

  0  0  0     0  0              0 V3000
M  V30 BEGIN CTAB
M  V30 COUNTS 4 3 0 0 0
M  V30 BEGIN ATOM
M  V30 1 N 0.357236 0.412500 0.000000 0
M  V30 2 C 1.071707 0.000000 0.000000 0
M  V30 3 C -0.357236 0.000000 0.000000 0
M  V30 4 N -1.071707 -0.412500 0.000000 0
M  V30 END ATOM
M  V30 BEGIN BOND
M  V30 1 1 1 2
M  V30 2 1 1 3
M  V30 3 3 3 4
M  V30 END BOND
M  V30 END CTAB
M  END
"""
query = Chem.MolFromMolBlock(block)
query
# %%
smi = 'CN1C=NC=C1'
mol = Chem.MolFromSmiles(smi)
mol
# %%
params = SubstructMatchParameters()
params.aromaticMatchesConjugated = True
mol.GetSubstructMatch(query, params)
# %%
smarts = "N(C)C#N"
query2 =  Chem.MolFromSmarts(smarts)
query2
# %%
mol.GetSubstructMatch(query2, params)
```

Which gives a match between the mol block and the smiles structure




**Expected behavior**
Expect both substructure matches to be empty

**Screenshots**

![image](https://github.com/user-attachments/assets/d9adf90a-ac66-4c2b-ab4e-920171581d33)

**Configuration (please complete the following information):**
 - RDKit version:  2024.09.04
 - OS: Windows
 - Python version (if relevant):
 - Are you using conda? yes
 - If you are using conda, which channel did you install the rdkit from? conda-forge
 - If you are not using conda: how did you install the RDKit?



Reference solution:
fix_patch: diff --git a/Code/GraphMol/Substruct/SubstructUtils.cpp b/Code/GraphMol/Substruct/SubstructUtils.cpp
index af6d52bb255..a7aebbbb2d8 100644
--- a/Code/GraphMol/Substruct/SubstructUtils.cpp
+++ b/Code/GraphMol/Substruct/SubstructUtils.cpp
@@ -168,6 +168,12 @@ bool bondCompat(const Bond *b1, const Bond *b2,
   PRECONDITION(b1, "bad bond");
   PRECONDITION(b2, "bad bond");
   bool res;
+
+  auto isConjugatedSingleOrDoubleBond([](const Bond *bond) {
+    return bond->getIsConjugated() && (bond->getBondType() == Bond::SINGLE ||
+                                       bond->getBondType() == Bond::DOUBLE);
+  });
+
   if (ps.useQueryQueryMatches && b1->hasQuery() && b2->hasQuery()) {
     res = static_cast<const QueryBond *>(b1)->QueryMatch(
         static_cast<const QueryBond *>(b2));
@@ -175,8 +181,10 @@ bool bondCompat(const Bond *b1, const Bond *b2,
              !b2->hasQuery() &&
              ((b1->getBondType() == Bond::AROMATIC &&
                b2->getBondType() == Bond::AROMATIC) ||
-              (b1->getBondType() == Bond::AROMATIC && b2->getIsConjugated()) ||
-              (b2->getBondType() == Bond::AROMATIC && b1->getIsConjugated()))) {
+              (b1->getBondType() == Bond::AROMATIC &&
+               isConjugatedSingleOrDoubleBond(b2)) ||
+              (b2->getBondType() == Bond::AROMATIC &&
+               isConjugatedSingleOrDoubleBond(b1)))) {
     res = true;
   } else {
     res = b1->Match(b2);