### Godot version

v4.0.3.stable.mono.official [5222a99f5]

### System information

macOS Monterey 12.6.6 (21G646)

### Issue description

When creating a tileset by code with custom data layers, removing a layer with `remove_custom_data_layer` does not update the name-to-layer mapping; `get_custom_data_layer_by_name` will continue to return that layer's original index.

This has a downstream effect of causing TileData objects attempting to use `get_custom_data('Layer B')` to return invalid data (whatever custom data is now in Layer B's old index; e.g. Layer C).

I would expect that after using `remove_custom_data_layer`, I would be able to still use `get_custom_data_layer_by_name` on that tileset.

### Steps to reproduce

Run this code to see that getting Layer B by name after removing the first layer continues to return its original index (1) when in reality it is now at index 0.
```
	var tileset:TileSet = TileSet.new()

	tileset.add_custom_data_layer()
	tileset.set_custom_data_layer_name(0, 'Layer A')
	tileset.set_custom_data_layer_type(0, TYPE_INT)

	tileset.add_custom_data_layer()
	tileset.set_custom_data_layer_name(1, 'Layer B')
	tileset.set_custom_data_layer_type(1, TYPE_STRING)

	print('Layer index 0 name : ', tileset.get_custom_data_layer_name(0)) # Layer A
	print('Layer index 1 name : ', tileset.get_custom_data_layer_name(1)) # Layer B
	print('Layer B is on index : ', tileset.get_custom_data_layer_by_name("Layer B")) # 1

	print('----- removing custom data layer 0 -----')
	tileset.remove_custom_data_layer(0)

	print('Layer index 0 name : ', tileset.get_custom_data_layer_name(0)) # Layer B
	print('Layer index 1 name : ', tileset.get_custom_data_layer_name(1)) # prints an error, as expected
	print('Layer B is on index : ', tileset.get_custom_data_layer_by_name("Layer B")) # returns 1 still! should return 0.
```

### Minimal reproduction project

[RemoveCustomDataLayer.zip](https://github.com/godotengine/godot/files/11804762/RemoveCustomDataLayer.zip)

ClassDB::bind_method(D_METHOD("get_tile_size_in_atlas", "atlas_coords"), &TileSetAtlasSource::get_tile_size_in_atlas);
	ClassDB::bind_method(D_METHOD("has_room_for_tile", "atlas_coords", "size", "animation_columns", "animation_separation", "frames_count", "ignored_tile"), &TileSetAtlasSource::has_room_for_tile, DEFVAL(INVALID_ATLAS_COORDS));
	ClassDB::bind_method(D_METHOD("get_tiles_to_be_removed_on_change", "texture", "margins", "separation", "texture_region_size"), &TileSetAtlasSource::get_tiles_to_be_removed_on_change);
	ClassDB::bind_method(D_METHOD("get_tile_at_coords", "atlas_coords"), &TileSetAtlasSource::get_tile_at_coords);
	ClassDB::bind_method(D_METHOD("set_tile_animation_columns", "atlas_coords", "frame_columns"), &TileSetAtlasSource::set_tile_animation_columns);
	ClassDB::bind_method(D_METHOD("get_tile_animation_columns", "atlas_coords"), &TileSetAtlasSource::get_tile_animation_columns);
	ClassDB::bind_method(D_METHOD("set_tile_animation_separation", "atlas_coords", "separation"), &TileSetAtlasSource::set_tile_animation_separation);
	ClassDB::bind_method(D_METHOD("get_tile_animation_separation", "atlas_coords"), &TileSetAtlasSource::get_tile_animation_separation);
	ClassDB::bind_method(D_METHOD("set_tile_animation_speed", "atlas_coords", "speed"), &TileSetAtlasSource::set_tile_animation_speed);
	ClassDB::bind_method(D_METHOD("get_tile_animation_speed", "atlas_coords"), &TileSetAtlasSource::get_tile_animation_speed);
	ClassDB::bind_method(D_METHOD("set_tile_animation_frames_count", "atlas_coords", "frames_count"), &TileSetAtlasSource::set_tile_animation_frames_count);
	ClassDB::bind_method(D_METHOD("get_tile_animation_frames_count", "atlas_coords"), &TileSetAtlasSource::get_tile_animation_frames_count);
	ClassDB::bind_method(D_METHOD("set_tile_animation_frame_duration", "atlas_coords", "frame_index", "duration"), &TileSetAtlasSource::set_tile_animation_frame_duration);
	ClassDB::bind_method(D_METHOD("get_tile_animation_frame_duration", "atlas_coords", "frame_index"), &TileSetAtlasSource::get_tile_animation_frame_duration);
	ClassDB::bind_method(D_METHOD("get_tile_animation_total_duration", "atlas_coords"), &TileSetAtlasSource::get_tile_animation_total_duration);
	
	ClassDB::bind_method(D_METHOD("create_alternative_tile", "atlas_coords", "alternative_id_override"), &TileSetAtlasSource::create_alternative_tile, DEFVAL(INVALID_TILE_ALTERNATIVE));
	ClassDB::bind_method(D_METHOD("remove_alternative_tile", "atlas_coords", "alternative_tile"), &TileSetAtlasSource::remove_alternative_tile);
	ClassDB::bind_method(D_METHOD("set_alternative_tile_id", "atlas_coords", "alternative_tile", "new_id"), &TileSetAtlasSource::set_alternative_tile_id);
	ClassDB::bind_method(D_METHOD("get_next_alternative_tile_id", "atlas_coords"), &TileSetAtlasSource::get_next_alternative_tile_id);
	ClassDB::bind_method(D_METHOD("get_tile_data", "atlas_coords", "alternative_tile"), &TileSetAtlasSource::get_tile_data);
	
	ClassDB::bind_method(D_METHOD("get_atlas_grid_size"), &TileSetAtlasSource::get_atlas_grid_size);
	ClassDB::bind_method(D_METHOD("get_tile_texture_region", "atlas_coords", "frame"), &TileSetAtlasSource::get_tile_texture_region, DEFVAL(0));
	
	ClassDB::bind_method(D_METHOD("_update_padded_texture"), &TileSetAtlasSource::_update_padded_texture);
	ClassDB::bind_method(D_METHOD("get_runtime_texture"), &TileSetAtlasSource::get_runtime_texture);
	ClassDB::bind_method(D_METHOD("get_runtime_tile_texture_region", "atlas_coords", "frame"), &TileSetAtlasSource::get_runtime_tile_texture_region);
}
TileSetAtlasSource::~TileSetAtlasSource() {