### Godot version

v4.0.beta12.mono.official

### System information

Linux 6.1.6-arch1-1

### Issue description

When creating TileSets from code, the TileSet's `add_source(source: TileSetSource, atlas_source_id_override: int = -1)` method is supposed to accept gdscript int (which is a signed 64-bit int), however feeding it with integers above C++ signed int (>2147483647) will result in a failure - in fact the actual return int (which is supposed to be the source_id override) is equal to 0 and not -1 as method description implies should be the case when the source could not be added. 

PS. Why do I need such huge numbers for tileset sources? I'm adding tilesets from a set of config text files and I'm hashing some parameters from it (via String `hash()` method which returns a 32-bit int) to use as a source_id for the tile set source. I will workaround that one way or another, of course, it's only marginally annoying :) 




### Steps to reproduce

```
var tileset : TileSet = TileSet.new()
var tileset_source : TileSetAtlasSource = TileSetAtlasSource.new()
	
var result : int 
	
result = tileset.add_source(tileset_source, 2147483647)
print("Adding source ID 2147483647 (int) -> ", result) # OK for signed int
	
result = tileset.add_source(tileset_source, 2147483648)
print("Adding source ID 2147483648 (signed int +1) -> ", result) # NOK 
```

![image](https://user-images.githubusercontent.com/16452779/212549500-f5fbdf2b-1643-4874-ae49-19908cab55f4.png)


### Minimal reproduction project

N/A
Simple code to reproduce as depicted above. 
property_info = PropertyInfo(Variant::FLOAT, vformat("animation_frame_%d/duration", i), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR);
			if (!store_durations) {
				property_info.usage ^= PROPERTY_USAGE_STORAGE;
			}
			tile_property_list.push_back(property_info);
		}
		for (const KeyValue<int, TileData *> &E_alternative : E_tile.value.alternatives) {
			
			tile_property_list.push_back(PropertyInfo(Variant::INT, vformat("%d", E_alternative.key), PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR));
			
			List<PropertyInfo> alternative_property_list;
			E_alternative.value->get_property_list(&alternative_property_list);
			for (PropertyInfo &alternative_property_info : alternative_property_list) {
				Variant default_value = ClassDB::class_get_default_property_value("TileData", alternative_property_info.name);
				Variant value = E_alternative.value->get(alternative_property_info.name);
				if (default_value.get_type() != Variant::NIL && bool(Variant::evaluate(Variant::OP_EQUAL, value, default_value))) {
					alternative_property_info.usage ^= PROPERTY_USAGE_STORAGE;
				}
				alternative_property_info.name = vformat("%s/%s", vformat("%d", E_alternative.key), alternative_property_info.name);
				tile_property_list.push_back(alternative_property_info);
			}
		}
		
		for (PropertyInfo &tile_property_info : tile_property_list) {
			tile_property_info.name = vformat("%s/%s", vformat("%d:%d", E_tile.key.x, E_tile.key.y), tile_property_info.name);
			p_list->push_back(tile_property_info);
		}
	}
}
void TileSetAtlasSource::create_tile(const Vector2i p_atlas_coords, const Vector2i p_size) {