issue: https://linear.app/comm/issue/ENG-4889/memoize-action-for-every-keyservercall
Fistly, `boundCallServerEndpointSelector` is added to memoize the value retuned from `bindCookieAndUtilsIntoCallServerEndpoint` based on its arguments. `bindCookieAndUtilsIntoCallServerEndpoint` creates some functions, so it might be beneficial to memoize them. It is also called when the action is being executed - only once the client decides which keyserver they want to call with this action, we can bind the correct cookie and other values to a `callServerEndpoint`. And we want actions to be as fast as possible.
Secondly, `baseCreateBoundKeyserverCallActionSelector`/`createBoundKeyserverCallActionSelector` is added. This is similar to `baseCreateBoundServerCallsSelector` that was used in `useServerCall`. `_memoize` keeps a map of results, keyed by the first argument of the function it memoizes. So what we are doing is creating a selector for each keyserverCall. Every one of those selectors remembers the last value calculated for its action. So that when we call `useKeyserverCall` on KeyserverCall A, then on KeyserverCall B, then again on A (and `dispatch`, `currentUserInfo` and `keyserverInfos` have not changed during this time), the value returned for A is the same in both cases. Even though `useMemo` in `useKeyserverCall` changed its return value twice. This allows for actions to only change when the things they are dependant on change.