interact save state/load state

- [x] See 93517b8b6f7378f09c0efe81ad92c6740efa6591. `f._state()` returns a JSON dictionary of the current state of the controls
- [x] See 93517b8b6f7378f09c0efe81ad92c6740efa6591. `f._state(state)` loads a new state for the controls (doesn't update, though---this lets someone customize a bit more if they want)
- [x] `f._bookmark('name', state)` adds the state to a bookmark dictionary
- [x] Have a UI to select and apply bookmark states and update the function, like a little menu button or something in the corner of the interact