### Godot version

4.1 stable, 4.1.1 rc1

### System information

Windows 10, Forward +

### Issue description

When updating the global_position of a Node2D that's outside of the scene tree, the global_position does not update. I came across this issue because when I instantiate a scene, I usually set the instantiated object's properties before adding it to the scene tree. When I tried setting the global_position, I noticed the value seems to stay at (0,0). Interestingly, even though the global_position does not update, the position property does. Is it fine to update a node's (global) position when it's not inside the scene tree? Or should we not do this

Also possibly related to #75676

### Steps to reproduce

```gdscript
extends Node

func _ready() -> void:
	var a = Node2D.new()
	a.global_position = Vector2(1, 1)
	assert(a.global_position == Vector2(1, 1))
```

The above assertion fails on 4.1 stable and 4.1.1 rc1, but succeeds on 4.0.2 and 4.0.3. I didn't test other versions besides these

### Minimal reproduction project

N/A
Color modulate = Color(1, 1, 1, 1);
	Color self_modulate = Color(1, 1, 1, 1);
	List<CanvasItem *> children_items;
	List<CanvasItem *>::Element *C = nullptr;
	int light_mask = 1;
	uint32_t visibility_layer = 1;
	int z_index = 0;
	bool z_relative = true;
	bool y_sort_enabled = false;
	Window *window = nullptr;
	bool visible = true;
	bool parent_visible_in_tree = false;
	bool pending_update = false;
	bool top_level = false;
	bool drawing = false;
	bool block_transform_notify = false;
	bool behind = false;
	bool use_parent_material = false;
	bool notify_local_transform = false;
	bool notify_transform = false;
	bool hide_clip_children = false;
	ClipChildrenMode clip_children_mode = CLIP_CHILDREN_DISABLED;
	mutable RS::CanvasItemTextureFilter texture_filter_cache = RS::CANVAS_ITEM_TEXTURE_FILTER_LINEAR;
	mutable RS::CanvasItemTextureRepeat texture_repeat_cache = RS::CANVAS_ITEM_TEXTURE_REPEAT_DISABLED;
	TextureFilter texture_filter = TEXTURE_FILTER_PARENT_NODE;
	TextureRepeat texture_repeat = TEXTURE_REPEAT_PARENT_NODE;
	Ref<Material> material;
	mutable Transform2D global_transform;
	mutable MTFlag global_invalid;
	_FORCE_INLINE_ bool _is_global_invalid() const { return is_group_processing() ? global_invalid.mt.is_set() : global_invalid.st; }