### Godot version

4.0.1

### System information

Windows 11

### Issue description

When you have binds set for a given signal in the editor and then duplicate the node with ctrl + D, it does not maintain the bind values; they are simply ignored. I can't imagine this is not a bug, so reporting it. If absolutely needed, I can produce a repro project for this, it's just very simple and probably an obvious bug somewhere in the duplication code.

### Steps to reproduce

1. Create a basic project. (One is not included because the issue requires actually doing the steps, rather than looking at what's there.)
2. Create a Node2D as the root of a scene. Give it an Area2D.
3. Add a script to the Node2D and connect the area_entered signal of Area2D to the Node2D's script, including one or more extra bound values in the advanced editor.
4. Duplicate the Area2D; note that the signal connections themselves are duplicated, but the binds array has not been.

### Minimal reproduction project

N/A
ERR_FAIL_COND_MSG(data.blocked > 0, "Parent node is busy setting up children, `move_child()` failed. Consider using `move_child.call_deferred(child, index)` instead (or `popup.call_deferred()` if this is from a popup).");
	
	
	if (!p_ignore_end) { 
		if (p_child->data.internal_mode == INTERNAL_MODE_FRONT) {
			if (p_index == data.internal_children_front_count_cache) {
				p_index--;
			}
		} else if (p_child->data.internal_mode == INTERNAL_MODE_BACK) {
			if (p_index == (int)data.children_cache.size()) {
				p_index--;
			}
		} else {
			if (p_index == (int)data.children_cache.size() - data.internal_children_back_count_cache) {
				p_index--;
			}
		}
	}
	int child_index = p_child->get_index();
	if (child_index == p_index) {
		return; 
	}
	int motion_from = MIN(p_index, child_index);
	int motion_to = MAX(p_index, child_index);
	data.children_cache.remove_at(child_index);
	data.children_cache.insert(p_index, p_child);
	if (data.tree) {
		data.tree->tree_changed();