Finalize JamiSwig interface and implement account detail routes

Changes:
- Add missing methods to JamiSwig interface
- Create new stringMapToRecord and itToRecord functions
- Rename id to accountId everywhere for consistency
- Rename jamid to jamiSwig inside Jamid service for clarity
- Implement Jamid functionality:
    - getVolatileAccountDetails
    - getAccountDetails with AccountDetails interface
    - setAccountDetails
    - getDevices
    - getDefaultModerators
- Reorder and rename methods in Jamid for consistency with JamiSwig
- Implement all routes for accountRouter (GET/POST /account)
- Add various TODO comments for future work

Change-Id: Id14ddde3bc8b4484d82ad84c57384567d92bd70f
diff --git a/server/src/ws.ts b/server/src/ws.ts
index 74a7a06..eadbab0 100644
--- a/server/src/ws.ts
+++ b/server/src/ws.ts
@@ -34,6 +34,7 @@
     const wss = new WebSocketServer({ noServer: true });
     wss.on('connection', (ws: WebSocket, _req: IncomingMessage, accountId: string) => {
       log.info('New connection', accountId);
+      // TODO: Add the account ID here to a map of accountId -> WebSocket connections
 
       ws.on('message', (_data) => {
         ws.send(JSON.stringify({ accountId }));