### Godot version

4.0 stable

### System information

Windows 10

### Issue description

Running .clear() on a TileMap with Scene tiles leaves the tiles in place, as though nothing happened.

This appears to be the same issue as raised in [#69596](https://github.com/godotengine/godot/issues/69596), [#72456](https://github.com/godotengine/godot/pull/72456), and [67330](https://github.com/godotengine/godot/pull/67330). None of the previous issues seem to have presented a fix for this issue besides running some dummy operations on the TileMap, which have not had any effect for me.

Manually running queue_free() on each tile scene doesn't work, presumably since they are being cached. And running a dummy operation on the TileMap doesn't have any impact to speak of.

Not sure how to proceed, or if it's just impossible to remove Scene tiles once they're created.

### Steps to reproduce

The minimal reproduction project has a TileMap with several simple scene tiles. The attached script attempts to .clear() the TileMap when the user presses Enter, demonstrating my issue.

### Minimal reproduction project

[TileMapMinimumRecreationProject.zip](https://github.com/godotengine/godot/files/10959111/TileMapMinimumRecreationProject.zip)

TileSetSource *source;
			if (tile_set->has_source(c.source_id)) {
				source = *tile_set->get_source(c.source_id);
				if (!source->has_tile(c.get_atlas_coords()) || !source->has_alternative_tile(c.get_atlas_coords(), c.alternative_tile)) {
					continue;
				}
				TileSetScenesCollectionSource *scenes_collection_source = Object::cast_to<TileSetScenesCollectionSource>(source);
				if (scenes_collection_source) {
					Ref<PackedScene> packed_scene = scenes_collection_source->get_scene_tile_scene(c.alternative_tile);
					if (packed_scene.is_valid()) {
						Node *scene = packed_scene->instantiate();
						Control *scene_as_control = Object::cast_to<Control>(scene);
						Node2D *scene_as_node2d = Object::cast_to<Node2D>(scene);
						if (scene_as_control) {
							scene_as_control->set_position(tile_map_node->map_to_local(E_cell) + scene_as_control->get_position());
						} else if (scene_as_node2d) {
							Transform2D xform;
							xform.set_origin(tile_map_node->map_to_local(E_cell));
							scene_as_node2d->set_transform(xform * scene_as_node2d->get_transform());
						}
						tile_map_node->add_child(scene);
						q.scenes[E_cell] = scene->get_name();
					}
				}
			}
		}
		q_list_element = q_list_element->next();
	}
}
void TileMapLayer::_scenes_cleanup_quadrant(TileMapQuadrant *p_quadrant) {