### Apache Airflow version

2.5.0

### What happened

https://github.com/apache/airflow/pull/20888 enables the use of markup to style the `webserver.instance_name`.
However, if the instance name has HTML code, this will also be reflected in the `<title>` tag, as shown in the screenshot below.
![image](https://user-images.githubusercontent.com/562969/212091882-d33bb0f7-75c2-4c92-bd4f-4bc7ba6be8db.png)

This is not a pretty behaviour.

### What you think should happen instead

Ideally, if `webserver. instance_name_has_markup = True`, then the text inside the `<title>` should be stripped of HTML code.

For example:
- Set `webserver.instance_name` to some text with markup, like `<b style="color: red">title</b>`
- Set `webserver.Instance_name_has_markup` to `true`

This is how the `<title>` tag should look like:

```html
<title>DAGs - title</title>
```

Instead of:

```
<title>DAGs - &lt;b style=&#34;color: red&#34;&gt;title&lt;b&gt;</title>
```

### How to reproduce

- Airflow version 2.3+, which is [when this change has been introduced](https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#instance-name-has-markup)
- Set `webserver.instance_name` to some text with markup, like `<b style="color: red">title</b>`
- Set `webserver.Instance_name_has_markup` to `true`


### Operating System

Doesn't matter

### Versions of Apache Airflow Providers

_No response_

### Deployment

Other

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

with create_session() as session:
        session.query(BaseJob).filter(
            BaseJob.job_type == "SchedulerJob",
            BaseJob.state == "running",
        ).delete()
    yield "unhealthy", None
@pytest.mark.parametrize(
    "heartbeat",
    ["heartbeat_healthy", "heartbeat_too_slow", "heartbeat_not_running"],
)
def test_health(request, admin_client, heartbeat):
    
    scheduler_status, last_scheduler_heartbeat = request.getfixturevalue(heartbeat)
    resp = admin_client.get("health", follow_redirects=True)
    resp_json = json.loads(resp.data.decode("utf-8"))
    assert "healthy" == resp_json["metadatabase"]["status"]
    assert scheduler_status == resp_json["scheduler"]["status"]
    assert last_scheduler_heartbeat == resp_json["scheduler"]["latest_scheduler_heartbeat"]
def test_users_list(admin_client):
    resp = admin_client.get("users/list", follow_redirects=True)
    check_content_in_response("List Users", resp)
@pytest.mark.parametrize(
    "path, body_content",
    [("roles/list", "List Roles"), ("roles/show/1", "Show Role")],
)
def test_roles_read(admin_client, path, body_content):