Factor out more code from execute_convergence

`execute_convergence` still has a bit too much going on, so I've factored out some stuff to other `otter.convergence` modules.

- `plan` was added to `otter.convergence.planning`, which creates an optimized plan
- `steps_to_effects` was added to `otter.convergence.effecting`, so `execute_convergence` doesn't need to care about the step -> request step.
- `get_all_convergence_data` was added to `otter.convergence.gathering`, which was the biggest win for the size of `execute_convergence`.

At the same time, `json_to_LBConfigs` and `get_desired_group_state` were moved from `gathering` to `composition` because I realized they're not about *gathering* data -- they're about converting pre-existing Otter data structures (LB configs and launch configs) to convergence data structures. `composition` isn't really the perfect place for them, but I think it's better than `gathering`.


It's kind of terrible that Python 3's `map` doesn't let you iterate over the resulting iterable twice...