### Godot version

4.0.1.stable

### System information

Manjaro Linux

### Issue description

As the title mentions, setting the property `trail_lifetime` of `GPUParticles3D` below 0.1 will - as defined in `servers/rendering/renderer_rd/storage_rd/particles_storage.cpp:424` - always result in the error message: 

`ERROR: Condition "p_length < 0.1" is true.`

This is true for setting it from the editor and from script. Since this is a hardcoded value, would it not be more user-friendly to limit the `p_length` and warn the user if they try to set it below this threshold? 

### Steps to reproduce

Create a scene with `GPUParticles3D` and set the property `trail_lifetime` below 0.1 from editor or script.

### Minimal reproduction project

Trivial
uvs.push_back(Vector2((region_rect.position.x + region_rect.size.x) / atlas_size.x, region_rect.position.y / atlas_size.y));
					uvs.push_back(Vector2((region_rect.position.x + region_rect.size.x) / atlas_size.x, (region_rect.position.y + region_rect.size.y) / atlas_size.y));
					uvs.push_back(Vector2(region_rect.position.x / atlas_size.x, (region_rect.position.y + region_rect.size.y) / atlas_size.y));
				} else {
					uvs.push_back(Vector2(0, 0));
					uvs.push_back(Vector2(1, 0));
					uvs.push_back(Vector2(1, 1));
					uvs.push_back(Vector2(0, 1));
				}
				Vector<int> indices = { 0, 1, 2, 0, 2, 3 };
				Array arr;
				arr.resize(RS::ARRAY_MAX);
				arr[RS::ARRAY_VERTEX] = points;
				arr[RS::ARRAY_TEX_UV] = uvs;
				arr[RS::ARRAY_INDEX] = indices;
				RS::get_singleton()->mesh_add_surface_from_arrays(mesh, RS::PRIMITIVE_TRIANGLES, arr, Array(), Dictionary(), RS::ARRAY_FLAG_USE_2D_VERTICES);
				RS::get_singleton()->particles_set_trail_bind_poses(particles, Vector<Transform3D>());
			}
			RS::get_singleton()->canvas_item_add_particles(get_canvas_item(), particles, texture_rid);
#ifdef TOOLS_ENABLED
			if (show_visibility_rect) {
				draw_rect(visibility_rect, Color(0, 0.7, 0.9, 0.4), false);
			}
#endif
		} break;
		case NOTIFICATION_ENTER_TREE: {
			if (sub_emitter != NodePath()) {
				_attach_sub_emitter();
			}
			if (can_process()) {