Issue title: Retrospective Demo Implementation Prep
 Issue body: ## Issue - Enhancement

Ahead of the demo script and high-fidelity designs from #2416, we can lay the foundation of how we'll implement the demo.

### Acceptance Criteria (optional)
A user can:
   - land a route (e.g. `retro-demo`)
   - when landing the first time, getting a modal asking them for their preferred name
   - advance to reflect:
      - see the help modal raised by default
      - see some bots make some cards
   - advance to group
      - see some bots group some cards
   - advance to vote
      - see some bots vote on some cards
   - advance to discuss
      - when advancing to each vote topic see some bots add some tasks
    - when user presses end meeting at any time, reach a meeting summary

- **Estimated effort:** 15 points ([see CONTRIBUTING.md](https://github.com/ParabolInc/action/blob/master/CONTRIBUTING.md#points-and-sizes))

 Comments: 
 Comment 0: burndown
- [ ] create /retrospective-demo route
- [ ] look for local DB in local storage, if not found or older than 1 hour, create a new one
- [ ] create a mock team
- [ ] create a meeting object that is complete until the reflect phase
- [ ] create 3 mock users/team members/meeting members (2 bots, 1 for viewer)
- [ ] create LocalAtmosphere that has a transport that talks to ClientGraphQLServer
- [ ] create ClientGraphQLServer that takes in query text & variables & returns the same response as our server. Option for an easy hash table here, but 1 change in the actual code could break the demo then. even with graphql, 1 change to the schema could break the code. could just use the op name? op name seems like the smallest footprint
- [ ] ignore subscription requests, those will be published anyways
- [ ] Each bot action is written as a thunk, in an ordered list
- [ ] events to send include: edit reflection, addReflection, start drag, drag, end drag, vote, add task


{'source': 'GithubIssues', 'repo_name_with_owner': 'ParabolInc/action', 'issue_id': 365077617, 'repo_stars': 865.0}