### Godot version

v4.0.beta11.official [91713ced8]

### System information

MX Linux 21

### Issue description

In Godot 3, TileMap had methods get_used_cells() and get_used_cells_by_id(). Godot 4's TileMap only has get_used_cells() and is missing get_used_cells_by_id().

get_used_cells_by_id() is highly useful in multiple cases, for example when trying to get all cells that are of road type, to randomly spawn a car.

Re-implementing get_used_cells_by_id() should be simple. The method could simply call get_used_cells(), and ignore all cells that are of the wrong ID.

### Steps to reproduce

N/A

### Minimal reproduction project

N/A
RBSet<int> y_sorted_z_index;
	for (int layer = 0; layer < (int)layers.size(); layer++) {
		if (layers[layer].y_sort_enabled) {
			y_sorted_z_index.insert(layers[layer].z_index);
		}
	}
	
	for (int layer = 0; layer < (int)layers.size(); layer++) {
		if (!layers[layer].y_sort_enabled && y_sorted_z_index.has(layers[layer].z_index)) {
			warnings.push_back(RTR("A Y-sorted layer has the same Z-index value as a not Y-sorted layer.\nThis may lead to unwanted behaviors, as a layer that is not Y-sorted will be Y-sorted as a whole with tiles from Y-sorted layers."));
			break;
		}
	}
	if (tile_set.is_valid() && tile_set->get_tile_shape() == TileSet::TILE_SHAPE_ISOMETRIC) {
		bool warn = !is_y_sort_enabled();
		if (!warn) {
			for (int layer = 0; layer < (int)layers.size(); layer++) {
				if (!layers[layer].y_sort_enabled) {
					warn = true;
					break;
				}
			}
		}
		if (warn) {
			warnings.push_back(RTR("Isometric TileSet will likely not look as intended without Y-sort enabled for the TileMap and all of its layers."));
		}
	}
	return warnings;
}
void TileMap::_bind_methods() {