Improve permission handling in call flow

Improve permission handling by asking the user to give mic and camera permissions before sending `CallBegin` or `CallAccept` for the caller and receiver respectively.
Followed the flow described here: https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Connectivity#session_descriptions

CallProvider:

- Change functions order to place listeners under the function that sends the corresponding WebSocket message.
- Replace `Default` CallStatus with `Loading` for when asking user permissions before sending the `CallBegin`/`CallAccept` message.
- Remove `localStream` and `remoteStream` from `CallContext`. They are now available only in `WebRtcContext`.
- Replace `setAudioStatus` and `setVideoStatus` with `setIsAudioOn` and `setIsVideoOn`. A `useEffect` is now used to disable the tracks when the audio/video status changes.

WebRtcProvider:

- Move WebRTC connection close logic to WebRtcProvider
- Remove `webRtcConnection` from `WebRtcContext`. `WebRtcProvider` is now in charge of setting everything related to the WebRTC Connection.

UI:

- Add `CallPermissionDenied` page for when permissions are denied.
- Rework `CallPending` to display `Loading...` when waiting for user permissions

Change-Id: I48153577cca4c73cdb9b81d2fa78cfdfe2e06d69
diff --git a/client/src/locale/fr/translation.json b/client/src/locale/fr/translation.json
index 1441ff9..f40ec7e 100644
--- a/client/src/locale/fr/translation.json
+++ b/client/src/locale/fr/translation.json
@@ -72,13 +72,15 @@
   "message_input_placeholder_four": "Écrire à {{member0}}, {{member1}}, {{member2}}, +1 autre membre",
   "message_input_placeholder_more": "Écrire à {{member0}}, {{member1}}, {{member2}}, +{{excess}} autres membres",
   "conversation_add_contact": "Ajouter le contact",
+  "loading": "Chargement...",
   "calling": "Appel vers {{member0}}",
   "connecting": "Connexion en cours...",
   "end_call": "Fin d'appel",
-  "incoming_call_medium": "",
   "refuse_call": "Refuser",
   "accept_call_audio": "Accepter en audio",
   "accept_call_video": "Accepter en vidéo",
+  "permission_denied_title": "Vous avez refusé à Jami les accès à votre caméra et microphone",
+  "permission_denied_details": "Vous devez donner à Jami le droit d'utiliser votre caméra et votre microphone afin de faire un appel",
   "settings_title_general": "Général",
   "settings_title_system": "Système",
   "setting_dark_theme": "Thème sombre",