### 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
navigation_server_2d = memnew(NavigationServer2D);
			ERR_PRINT_ON;
			memnew(InputMap);
			InputMap::get_singleton()->load_default();
			theme_db = memnew(ThemeDB);
			theme_db->initialize_theme_noproject();
			memnew(SceneTree);
			SceneTree::get_singleton()->initialize();
			if (!DisplayServer::get_singleton()->has_feature(DisplayServer::Feature::FEATURE_SUBWINDOWS)) {
				SceneTree::get_singleton()->get_root()->set_embedding_subwindows(true);
			}
			return;
		}
		if (name.find("Audio") != -1) {
			
			int dummy_idx = AudioDriverManager::get_driver_count() - 1;
			AudioDriverManager::initialize(dummy_idx);
			AudioServer *audio_server = memnew(AudioServer);
			audio_server->init();
			return;
		}
		if (suite_name.find("[Navigation]") != -1 && navigation_server_2d == nullptr && navigation_server_3d == nullptr) {
			ERR_PRINT_OFF;
			navigation_server_3d = NavigationServer3DManager::new_default_server();
			navigation_server_2d = memnew(NavigationServer2D);
			ERR_PRINT_ON;
			return;
		}
	}
	void test_case_end(const doctest::CurrentTestCaseStats &) override {