### 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)

bool is_valid();
	void clear();
	Ref<Tween> bind_node(Node *p_node);
	Ref<Tween> set_process_mode(TweenProcessMode p_mode);
	TweenProcessMode get_process_mode();
	Ref<Tween> set_pause_mode(TweenPauseMode p_mode);
	TweenPauseMode get_pause_mode();
	Ref<Tween> set_parallel(bool p_parallel);
	Ref<Tween> set_loops(int p_loops);
	Ref<Tween> set_speed_scale(float p_speed);
	Ref<Tween> set_trans(TransitionType p_trans);
	TransitionType get_trans();
	Ref<Tween> set_ease(EaseType p_ease);
	EaseType get_ease();
	Ref<Tween> parallel();
	Ref<Tween> chain();
	static real_t run_equation(TransitionType p_trans_type, EaseType p_ease_type, real_t t, real_t b, real_t c, real_t d);
	static Variant interpolate_variant(Variant p_initial_val, Variant p_delta_val, double p_time, double p_duration, Tween::TransitionType p_trans, Tween::EaseType p_ease);
	bool step(double p_delta);
	bool can_process(bool p_tree_paused) const;
	Node *get_bound_node() const;
	double get_total_time() const;
	Tween();
	Tween(bool p_valid);
};
VARIANT_ENUM_CAST(Tween::TweenPauseMode);
VARIANT_ENUM_CAST(Tween::TweenProcessMode);
VARIANT_ENUM_CAST(Tween::TransitionType);
VARIANT_ENUM_CAST(Tween::EaseType);
class PropertyTweener : public Tweener {