### Godot version

4.2.rc 7022271

### System information

Godot v4.2.rc (702227129) - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3090 (NVIDIA; 31.0.15.3713) - Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz (16 Threads)

### Issue description

Attempting to run Edit -> Apply Reset on an animation player with a RESET track fails because the `AnimationMixer::apply_reset` method is called with `p_user_initiated` true.

In this case, it attempts to use UndoRedo to apply `"_reset"` which does not exist / is not exposed on AnimationPlayer.
```
Animation Apply Reset
  core\object\undo_redo.cpp:345 - Error calling UndoRedo method operation '_reset': 'AnimationPlayer::_reset': Instance is null
```
Other uses of `apply_reset` pass false which directly calls `AnimationMixer::reset()` and works fine.

Is there any reason that `reset` or `apply_reset` aren't exposed to scripting normally?

### Steps to reproduce

1. Import a model with a reset track
2. New Inherited Scene
3. Select the scene button in the hierarchy to open the base model directly.
4. Click "Open Anyway"
5. Select the AnimationPlayer
6. Choose the `_T-Pose_` animation or any animation other than `RESET`
7. Click the Edit menu -> `Apply Reset`. Nothing happens.
8. An error is printed in the log

### Minimal reproduction project

[ApplyReset.zip](https://github.com/godotengine/godot/files/13442920/ApplyReset.zip)

track_value->is_continuous |= anim->value_track_get_update_mode(i) != Animation::UPDATE_DISCRETE;
				track_value->is_using_angle |= anim->track_get_interpolation_type(i) == Animation::INTERPOLATION_LINEAR_ANGLE || anim->track_get_interpolation_type(i) == Animation::INTERPOLATION_CUBIC_ANGLE;
				
				
				
				bool skip_update_mode_warning = false;
				if (track_value->is_continuous) {
					if (!Animation::is_variant_interpolatable(track_value->init_value)) {
						WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' uses a non-numeric type as key value with UpdateMode.UPDATE_CONTINUOUS. This will not be blended correctly, so it is forced to UpdateMode.UPDATE_DISCRETE.");
						track_value->is_continuous = false;
						skip_update_mode_warning = true;
					}
					if (track_value->init_value.is_string()) {
						WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' blends String types. This is an experimental algorithm.");
					}
				}
				if (!skip_update_mode_warning && was_continuous != track_value->is_continuous) {
					WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' has different update modes between some animations which may be blended together. Blending prioritizes UpdateMode.UPDATE_CONTINUOUS, so the process treats UpdateMode.UPDATE_DISCRETE as UpdateMode.UPDATE_CONTINUOUS with InterpolationType.INTERPOLATION_NEAREST.");
				}
				if (was_using_angle != track_value->is_using_angle) {
					WARN_PRINT_ONCE_ED("AnimationMixer: '" + String(E) + "', Value Track: '" + String(path) + "' has different interpolation types for rotation between some animations which may be blended together. Blending prioritizes angle interpolation, so the blending result uses the shortest path referenced to the initial (RESET animation) value.");
				}
			}
			track->setup_pass = setup_pass;
		}
	}
	List<NodePath> to_delete;
	for (const KeyValue<NodePath, TrackCache *> &K : track_cache) {
		TrackCache *tc = track_cache[K.key];
		if (tc->setup_pass != setup_pass) {