refreshChannelsAndUsers: fetch all users, not just the first page
refreshChannelsAndUsers: fetch all users, not just the first page

This change does a few things to refreshChannelsAndUsers:
 * It now fetches ALL users. It does this by fetching pages of users
   until we get less than a page's worth. It does this asynchronously,
   with each page being fetched in a separate async work item.
 * It also linearizes the fetches it does, by first fetching all users
   and only *then* fetching channel and status information. It does
   this because channel processing checks channels for DM status. If
   it encounters a DM channel whose corresponding user is not known to
   the application state, a separate, single-user-ID fetch for that
   user is queued up. But those fetches are redundant with the (also
   in-progress) fetches of pages of users. So to avoid this unnecessary
   traffic, we ensure that we've fetched all users and stored them in
   the state before we ever process channels. This way, all channel
   processing will already encounter its associated (DM) users in the
   state and avoid queueing up more fetches. This change in particular
   means that startup on slower servers will result in the sidebar not
   showing channels until all users are fetched. In the future we can
   improve on that in various other ways.

matterhorn-chat/matterhorn,aisamanra/matterhorn