### Godot version

4.0.dev (d0398f62f0)

### System information

Windows 10

### Issue description

`GraphNode` class declares members with conflicting names.  
- `selected` property: https://github.com/godotengine/godot/blob/0daa86d70e7338506c37bee6b6e0c4aba7255d68/scene/gui/graph_node.cpp#L1154
- `selected` signal: https://github.com/godotengine/godot/blob/0daa86d70e7338506c37bee6b6e0c4aba7255d68/scene/gui/graph_node.cpp#L1164

As now signals are truely members of the class, this leads to name colliding in several languages.  
- In GDScript, the signal can't be used as it is treated as a property:
![image](https://user-images.githubusercontent.com/48322356/210059248-edbbd142-5d34-41f0-a3f5-08d4f2e02fc3.png)
- In Kotlin, the generated API code cannot compile as signal and property declarations are conflicting:
```
e: ~\git\godot\modules\kotlin_jvm\kt\godot-library\src\main\kotlin\godot\gen\godot\GraphNode.kt: (53, 14): Conflicting declarations: public final val selected: Signal0, public final var selected: Boolean
e: ~\git\godot\modules\kotlin_jvm\kt\godot-library\src\main\kotlin\godot\gen\godot\GraphNode.kt: (182, 14): Conflicting declarations: public final val selected: Signal0, public final var selected: Boolean
```

### Steps to reproduce

Try to use `selected` signal from GDScript.

### Minimal reproduction project

N/A
return;
	}
	for (unsigned int i = 1; i < r_layers.size(); i++) {
		Vector<StringName> lower_layer = r_layers[i];
		Vector<StringName> upper_layer = r_layers[i - 1];
		int r = -1;
		for (int j = 0; j < lower_layer.size(); j++) {
			Vector<Pair<int, StringName>> up;
			StringName current_node = lower_layer[j];
			for (int k = 0; k < upper_layer.size(); k++) {
				StringName adjacent_neighbour = upper_layer[k];
				if (r_upper_neighbours[current_node].has(adjacent_neighbour)) {
					up.push_back(Pair<int, StringName>(k, adjacent_neighbour));
				}
			}
			int start = (up.size() - 1) / 2;
			int end = (up.size() - 1) % 2 ? start + 1 : start;
			for (int p = start; p <= end; p++) {
				StringName Align = r_align[current_node];
				if (Align == current_node && r < up[p].first) {
					r_align[up[p].second] = lower_layer[j];
					r_root[current_node] = r_root[up[p].second];
					r_align[current_node] = r_root[up[p].second];
					r = up[p].first;
				}
			}
		}
	}
}
void GraphEdit::_crossing_minimisation(HashMap<int, Vector<StringName>> &r_layers, const HashMap<StringName, HashSet<StringName>> &r_upper_neighbours) {