### Godot version

3.5 (991bb6ac7) -> 4.0.beta10 (d0398f62f)

### System information

Windows 11

### Issue description

I have some relatively simple tilesets created in version 3.5 containing textures, collision shapes, and occlusion polygons. These tilesets are almost completely unusable when migrated into Godot 4 without recreating most of the tileset by hand. Specifically:

- Tile size seems to always be set at 16x16 (this might be the root cause of some of the other issues). This might not be easy to convert properly since tile size is a property of the TileMap in Godot 3, but of the TileSet in Godot 4. That being said, the converter could likely guess at the proper tile size based on the tiles present in the map (e.g. given that all my tiles are 32x32, it would be logical to set tile size as 32x32).
- No occlusion layer is created, meaning **all occlusion polygons are lost**.
- Collision polygons are incorrectly offset from the textures: ![image](https://user-images.githubusercontent.com/4420888/210156434-90331901-5e1c-4f16-9839-19a21bbcc5d9.png) (this wouldn't be as big of a deal if there was a way to "drag" entire collision polygons rather than just individual vertices, but it seems like to only way to fix them is to recreate them from scratch).
- Collision polygons aren't rotated properly in auto-generated rotation alt tiles:
![image](https://user-images.githubusercontent.com/4420888/210156473-069cc7c4-3466-4aba-83ff-693dbba31737.png)
- (I imagine these same issues are present for tileset navigation layers, but I haven't tested that)

Probably related to issues #64006 and #67218.

### Steps to reproduce

- Create a basic tileset with occlusion + collision polygons in Godot 3.
- Convert the project to a Godot 4 project.
- Open the project in 4 and pay attention to the Tileset's textures & collision/occlusion polygons.


### Minimal reproduction project

[convert4.zip](https://github.com/godotengine/godot/files/10328029/convert4.zip)

ERR_FAIL_INDEX(p_from_index, custom_data_layers.size());
	ERR_FAIL_INDEX(p_to_pos, custom_data_layers.size() + 1);
	custom_data_layers.insert(p_to_pos, custom_data_layers[p_from_index]);
	custom_data_layers.remove_at(p_to_pos < p_from_index ? p_from_index + 1 : p_from_index);
	for (KeyValue<int, Ref<TileSetSource>> source : sources) {
		source.value->move_custom_data_layer(p_from_index, p_to_pos);
	}
	notify_property_list_changed();
	emit_changed();
}
void TileSet::remove_custom_data_layer(int p_index) {
	ERR_FAIL_INDEX(p_index, custom_data_layers.size());
	custom_data_layers.remove_at(p_index);
	for (KeyValue<String, int> E : custom_data_layers_by_name) {
		if (E.value == p_index) {
			custom_data_layers_by_name.erase(E.key);
			break;
		}
	}
	for (KeyValue<int, Ref<TileSetSource>> source : sources) {
		source.value->remove_custom_data_layer(p_index);
	}
	notify_property_list_changed();
	emit_changed();
}
int TileSet::get_custom_data_layer_by_name(String p_value) const {