Compatibility and memory footprint issues with `@SocketSession` decorator
<!--

/!\ IMPORTANT: Before opening issue

- Please update all of your packages. I won't investigate on the issue if you are on an old version.
- Please check that you have the same version for all Ts.ED dependencies (expected the logger). Many issues are related to a misconfigured packages.
- Please provide a reproducible example (avoid screenshot, prefer copy/pasted code). The stack trace isn't enough to investigate.

If theses requirements aren't checked, I WON'T INVESTIGATE (excepted if you are a PREMIUM SPONSORS!) and issue will be CLOSED!
-->

## Information

- **Version:** `7.x`
- **Packages**: `@tsed/socketio`


The `@tsed/socketio` library utilizes in-memory session storage allowing injecting the session data through `@SocketSession` decorator. However, this implementation is not compatible with [socket.io adapters](https://socket.io/docs/v4/adapter/) and [the connection state recovery](https://socket.io/docs/v4/connection-state-recovery) feature. Additionally, this approach can cause a growing memory footprint over time, which may impact the application's performance and stability.

To address the compatibility and memory footprint concerns, the usage of the `@SocketSession` decorator should be reworked. Instead of relying on in-memory session storage, the decorator should be modified to inject the value of `socket.data`, preserving backward compatibility with existing SocketIO implementations. 

## Example

```ts
@SocketService("/my-namespace")
export class MySocketService {
  $onConnection(@Socket socket: SocketIO.Socket, @SocketSession session: SocketSession) {
    if (socket.recovered) {
      // recovery was successful after the server crash, rolling update, etc
      console.log(session.get('key1')); // outputs value1
    } else {
      // new or unrecoverable session
      session.set('key1', 'value1');
    }
  }
}
```
