### Godot version

3.5.stable, 4 rc1

### System information

MacOS 12.6.1, Linux not sure which

### Issue description

Command line args set in ProjectSettings `editor/main_run_args` are split at spaces, even if they are quoted. 
This only occurs if started from the editor and only on Mac and Linux.

The only difference in 4 is that the main scene is also a command line arg (`res://Main.tscn`) for some reason.. That might be another bug

Here is a workaround to splice the args back together.
```gdscript
# Reverses a bug in Godot, which splits input strings at spaces even if they are quoted
# e.g. --arg="some value" becomes [ --arg="some, value" ]
# this only occurs with args in that format. --arg "some value" is safe
static func fix_godot_cmdline_args_string_space_splitting(args: PoolStringArray) -> PoolStringArray:
	if not OS.has_feature("editor"): # only happens in editor builds
		return args
	if OS.has_feature("Windows"): # windows is unaffected
		return args

	var fixed_args := PoolStringArray([])
	var fixed_arg := ""
	# if we encounter an argument that contains [code]=[/code] followed by a quote,
	# or an argument that starts with a quote, take all following args and
	# concatenate them into one, until we find the closing quote
	for arg in args:
		var arg_string := arg as String
		if '="' in arg_string or '="' in fixed_arg or \
				arg_string.begins_with('"') or fixed_arg.begins_with('"'):
			if not fixed_arg == "":
				fixed_arg += " "
			fixed_arg += arg_string
			if arg_string.ends_with('"'):
				fixed_args.append(fixed_arg.trim_prefix(" "))
				fixed_arg = ""
				continue
		# same thing for single quotes
		elif "='" in arg_string or "='" in fixed_arg \
				or arg_string.begins_with("'") or fixed_arg.begins_with("'"):
			if not fixed_arg == "":
				fixed_arg += " "
			fixed_arg += arg_string
			if arg_string.ends_with("'"):
				fixed_args.append(fixed_arg.trim_prefix(" "))
				fixed_arg = ""
				continue

		else:
			fixed_args.append(arg_string)

	return fixed_args
```

### Steps to reproduce

Set some args with spaces in ProjectSettings `editor/main_run_args`. 
E.g. `--arg="string with spaces" --second-arg 'with spaces'`

print them out
```gdscript
func _ready() -> void:
	print(OS.get_cmdline_args())
	for arg in OS.get_cmdline_args():
		printt("single arg:", arg)

	print("---")
	var fixed_args := fix_godot_cmdline_args_string_space_splitting(OS.get_cmdline_args())
	print(fixed_args)
	for arg in fixed_args:
		printt("fixed arg:", arg)
```
result
```
[--arg="string, with, spaces", --second-arg, 'with, spaces']
single arg:	--arg="string
single arg:	with
single arg:	spaces"
single arg:	--second-arg
single arg:	'with
single arg:	spaces'
---
[--arg="string with spaces", --second-arg, 'with spaces']
fixed arg:	--arg="string with spaces"
fixed arg:	--second-arg
fixed arg:	'with spaces'

```

### Minimal reproduction project

Works in 3.5 and 4rc1 (the run args just have to be set again after conversion)
[CmdLineArgSplitReproduction.zip](https://github.com/godotengine/godot/files/10691343/CmdLineArgSplitReproduction.zip)

if (screen_rect != Rect2()) {
		Size2 window_size;
		window_size.x = GLOBAL_GET("display/window/size/viewport_width");
		window_size.y = GLOBAL_GET("display/window/size/viewport_height");
		Size2 desired_size;
		desired_size.x = GLOBAL_GET("display/window/size/window_width_override");
		desired_size.y = GLOBAL_GET("display/window/size/window_height_override");
		if (desired_size.x > 0 && desired_size.y > 0) {
			window_size = desired_size;
		}
		if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_HIDPI)) {
			bool hidpi_proj = GLOBAL_GET("display/window/dpi/allow_hidpi");
			int display_scale = 1;
			if (OS::get_singleton()->is_hidpi_allowed()) {
				if (hidpi_proj) {
					display_scale = 1; 
				} else {
					display_scale = DisplayServer::get_singleton()->screen_get_max_scale(); 
				}
			} else {
				if (hidpi_proj) {
					display_scale = (1.f / DisplayServer::get_singleton()->screen_get_max_scale()); 
				} else {
					display_scale = 1; 
				}
			}
			screen_rect.position /= display_scale;
			screen_rect.size /= display_scale;
		}
		switch (window_placement) {