`removeEventListener` does not work because raw function is not passed
### Description

```nim
import std/[dom]

proc onkeydownEventHandler(e: Event) =
  echo "hey"

window.addEventListener    "keydown", onkeydownEventHandler
window.removeEventListener "keydown", onkeydownEventHandler
```

```html
<script src="./play.js"></script>
```

### Nim Version

Nim Compiler Version 2.1.9 [Windows: amd64]
Compiled at 2024-07-30
Copyright (c) 2006-2024 by Andreas Rumpf

active boot switches: -d:release

### Current Output

```text
`hey` is printed after every key press
```


### Expected Output

```text
it should not not log anything when pressing keys
```


### Possible Solution

here's the produced code when `-d:danger`:
```js
Temporary1 = onkeydownEventHandler__play_u2.bind(null); Temporary1.ClP_0 = onkeydownEventHandler__play_u2; Temporary1.ClE_0 = null;
window.addEventListener("keydown", Temporary1, false);
Temporary2 = onkeydownEventHandler__play_u2.bind(null); Temporary2.ClP_0 = onkeydownEventHandler__play_u2; Temporary2.ClE_0 = null;
window.removeEventListener("keydown", Temporary2);
```

it would work simply if the following code would be generated:
```js
window.addEventListener("keydown", onkeydownEventHandler__play_u2, false);
window.removeEventListener("keydown", onkeydownEventHandler__play_u2);
```

perhaps it is good to allow `addr someFunction` in `js` backend for workaround. i.e. the following code should produce the above code:
```nim
window.addEventListener    "keydown", addr onkeydownEventHandler
window.removeEventListener "keydown", addr onkeydownEventHandler
```

### Additional Information

_No response_