### Godot version

v3.5.1.stable.official [6fed1ffa3]

### System information

Steam OS, Steam Deck

### Issue description

Calling `tween_callback` where the first (object) parameter is a `Reference` doesn't work as I expected.  The code compiles and runs without producing any errors, but the callback function is never executed.

### Steps to reproduce

Running the minimal reproduction project demonstrates the issue.  The code pattern is quite simple:

**ReferenceType.gd**
```gdscript
extends Reference

func foo():
	print("foo was called")
```

**Test.gd**
```gdscript
extends Node2D

func _ready():
	var ref := preload("ReferenceType.gd").new()
	var tween := create_tween()
	tween.tween_interval(1)
	tween.tween_callback(ref, "foo")
```

I suspect that the issue is somehow related to reference-counting, and that `SceneTreeTween` is not updating the object's reference count.  I can get the behavior I expect by modifying the code to call `reference()` and `unreference()` manually, as shown below:

```gdscript
	var ref := preload("ReferenceType.gd").new()
	ref.reference()
	
	var tween := create_tween()
	tween.tween_interval(1)
	tween.tween_callback(ref, "foo")
	tween.tween_callback(ref, "unreference")
```

The documentation strongly recommends against calling these functions "unless you know what you're doing", so it feels like `SceneTreeTween` should handle this.  If this is expected behavior, it would be nice if the `SceneTreeTween` documentation urged caution when using `Reference`. 

### Minimal reproduction project

[ReferenceTween.zip](https://github.com/godotengine/godot/files/10328012/ReferenceTween.zip)

}
	if (!started) {
		ERR_FAIL_COND_V_MSG(tweeners.is_empty(), false, "Tween started, but has no Tweeners.");
		current_step = 0;
		loops_done = 0;
		total_time = 0;
		start_tweeners();
		started = true;
	}
	double rem_delta = p_delta * speed_scale;
	bool step_active = false;
	total_time += rem_delta;
#ifdef DEBUG_ENABLED
	double initial_delta = rem_delta;
	bool potential_infinite = false;
#endif
	while (rem_delta > 0 && running) {
		double step_delta = rem_delta;
		step_active = false;
		for (Ref<Tweener> &tweener : tweeners.write[current_step]) {
			
			double temp_delta = rem_delta;
			
			step_active = tweener->step(temp_delta) || step_active;
			step_delta = MIN(temp_delta, step_delta);
		}
		rem_delta = step_delta;
		if (!step_active) {
			emit_signal(SNAME("step_finished"), current_step);
			current_step++;