### 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)

for (HashMap<Vector2i, TileMapQuadrant>::Iterator F = quadrant_map.begin(); F; ++F) {
		TileMapQuadrant &q = F->value;
		for (const RID &ci : q.canvas_items) {
			RenderingServer::get_singleton()->canvas_item_set_default_texture_filter(ci, RS::CanvasItemTextureFilter(tile_map_node->get_texture_filter_in_tree()));
			_make_quadrant_dirty(F);
		}
	}
	_rendering_update();
}
void TileMapLayer::notify_texture_repeat_changed() {
	for (HashMap<Vector2i, TileMapQuadrant>::Iterator F = quadrant_map.begin(); F; ++F) {
		TileMapQuadrant &q = F->value;
		for (const RID &ci : q.canvas_items) {
			RenderingServer::get_singleton()->canvas_item_set_default_texture_repeat(ci, RS::CanvasItemTextureRepeat(tile_map_node->get_texture_repeat_in_tree()));
			_make_quadrant_dirty(F);
		}
	}
	_rendering_update();
}
void TileMapLayer::update_dirty_quadrants() {
	
	for (SelfList<TileMapQuadrant> *q = dirty_quadrant_list.first(); q; q = q->next()) {
		q->self()->map_to_local.clear();
		q->self()->local_to_map.clear();
		for (const Vector2i &E : q->self()->cells) {
			Vector2i pk = E;
			Vector2 pk_local_coords = tile_map_node->map_to_local(pk);
			q->self()->map_to_local[pk] = pk_local_coords;
			q->self()->local_to_map[pk_local_coords] = pk;
		}