### Godot version

4.0.dev.d1e5903c67956707948b1de370b807e3aad395b7

### System information

macOS 13.1

### Issue description

Script classes are not regenerated project-wide after first import. See the reproduction steps below.

This is a huge problem for large games since a class may not have all of its dependencies ready by the time it comes to parsing the script, so it doesn't get registered on the first pass, and there are no other passes. The only solution is to manually open every single script and save it (potentially multiple times if there are long dependency chains).

The symptom is happening as of #70557, but the root cause was still present before that PR. If I revert that PR, open the reproduction project, and then instead of deleting the below file I empty out the `_global_script_class*` members, A and B do not regenerate (but they do if you open and save them). This has become a serious regression because the class list is no longer saved to version control, so you can end up in a situation where deleting `.godot/` results in a broken project until you manually open and save every script (for every developer, every time they delete `.godot/`).

### Steps to reproduce

1. Download an open the below minimal reproduction project.
2. Look at the generated `.godot/global_script_class_cache.cfg` file. Both A and B will be in there (good).
3. Close Godot and delete this file.
4. Open Godot again.
5. Look at the lack of a `.godot/global_script_class_cache.cfg` file. It is not regenerated (bad).
6. Open the `a.gd` script and save it.
7. Look at the generated `.godot/global_script_class_cache.cfg` file. Only A will be in there, but B will not (bad).

### Minimal reproduction project

[GlobalClassMissing.zip](https://github.com/godotengine/godot/files/10515105/GlobalClassMissing.zip)

scripting_enabled = p_enabled;
}
bool ScriptServer::is_scripting_enabled() {
	return scripting_enabled;
}
ScriptLanguage *ScriptServer::get_language(int p_idx) {
	ERR_FAIL_INDEX_V(p_idx, _language_count, nullptr);
	return _languages[p_idx];
}
void ScriptServer::register_language(ScriptLanguage *p_language) {
	ERR_FAIL_NULL(p_language);
	ERR_FAIL_COND(_language_count >= MAX_LANGUAGES);
	_languages[_language_count++] = p_language;
}
void ScriptServer::unregister_language(const ScriptLanguage *p_language) {
	for (int i = 0; i < _language_count; i++) {
		if (_languages[i] == p_language) {
			_language_count--;
			if (i < _language_count) {
				SWAP(_languages[i], _languages[_language_count]);
			}
			return;
		}
	}
}
void ScriptServer::init_languages() {