### Godot version

v4.1.1.stable.mono.official [bd6af8e0e]

### System information

Godot v4.1.1.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated Radeon RX 580 Series (Advanced Micro Devices, Inc.; 31.0.21902.5) - AMD Ryzen 7 2700X Eight-Core Processor (16 Threads)

### Issue description

## Problem

When using a NavigationAgent2D/3D, if `target_desired_distance` is below `path_desired_distance` (which is the default for NavigationAgent2D), `is_target_reached` will not become `true` even if you are within `target_desired_distance` distance to the `target_position`.

The documentation says nothing about that behavior.

If `target_desired_distance` is equal or above `path_desired_distance`, the problem won't appear.

## Expected behavior

If the position of the parent node of a NavigationAgent2D/3D is within `target_desired_distance` to `target_position`, `is_target_reached` invariably returns `true`.

## Code sample

```gdscript
extends CharacterBody2D

var movement_speed: float = 200.0

@export var target_node: Node2D
@onready var navigation_agent: NavigationAgent2D = $NavigationAgent2D

func _ready():
	navigation_agent.path_desired_distance = 20
	navigation_agent.target_desired_distance = 10
	call_deferred("actor_setup")

func actor_setup():
	await get_tree().physics_frame
	navigation_agent.target_position = target_node.global_position

func _physics_process(delta):
	var next_path_position = navigation_agent.get_next_path_position()
	
	var new_velocity = next_path_position - global_position
	velocity = new_velocity.normalized() * movement_speed

	move_and_slide()
	
	if navigation_agent.is_target_reached():
		print("Target reached") # this will never be printed
```

## Cause of the bug

I looked at the source code and the reason for this behavior is that once the last path waypoint has been reached, the distance check that changes `is_target_reached` to `true` won't run anymore.
It's an easy fix and I have a PR ready that I'll publish just after this bug report.

### Steps to reproduce

1. Open the MRP
2. Run the 2D or 3D scene
3. Observe the property values of the navigation agent that are printed to the output

### Minimal reproduction project

[Bug reproduction.zip](https://github.com/godotengine/godot/files/12772840/Bug.reproduction.zip)

const TypedArray<RID> &navigation_path_rids = navigation_result->get_path_rids();
		const Vector<int64_t> &navigation_path_owners = navigation_result->get_path_owner_ids();
		while (origin.distance_to(navigation_path[navigation_path_index] - Vector3(0, path_height_offset, 0)) < path_desired_distance) {
			Dictionary details;
			const Vector3 waypoint = navigation_path[navigation_path_index];
			details[SNAME("position")] = waypoint;
			int waypoint_type = -1;
			if (path_metadata_flags.has_flag(NavigationPathQueryParameters3D::PathMetadataFlags::PATH_METADATA_INCLUDE_TYPES)) {
				const NavigationPathQueryResult3D::PathSegmentType type = NavigationPathQueryResult3D::PathSegmentType(navigation_path_types[navigation_path_index]);
				details[SNAME("type")] = type;
				waypoint_type = type;
			}
			if (path_metadata_flags.has_flag(NavigationPathQueryParameters3D::PathMetadataFlags::PATH_METADATA_INCLUDE_RIDS)) {
				details[SNAME("rid")] = navigation_path_rids[navigation_path_index];
			}
			if (path_metadata_flags.has_flag(NavigationPathQueryParameters3D::PathMetadataFlags::PATH_METADATA_INCLUDE_OWNERS)) {
				const ObjectID waypoint_owner_id = ObjectID(navigation_path_owners[navigation_path_index]);
				
				Object *owner = nullptr;
				if (waypoint_owner_id.is_valid()) {
					owner = ObjectDB::get_instance(waypoint_owner_id);
				}
				details[SNAME("owner")] = owner;
				if (waypoint_type == NavigationPathQueryResult3D::PATH_SEGMENT_TYPE_LINK) {
					const NavigationLink3D *navlink = Object::cast_to<NavigationLink3D>(owner);
					if (navlink) {
						Vector3 link_global_start_position = navlink->get_global_start_position();
						Vector3 link_global_end_position = navlink->get_global_end_position();
						if (waypoint.distance_to(link_global_start_position) < waypoint.distance_to(link_global_end_position)) {
							details[SNAME("link_entry_position")] = link_global_start_position;