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`.


Whence the `on(list)`? `map` already gives you a list in Python 2, right? Python 3 compat?

Also, I guess it doesn't matter a whole lot, but repeated `.on` vs function composition?