----------
**Added**
* Added `start_conf` parameter to `SparseLadderGraph.extract_solution` and `solve_ladder_graph_from_cartesian_process_list` to allow minimizing ladder graph with respect to a given start configuration
* Added `picknplace.transition_planner`
* Added `target_conf` attribute to `CartesianProcess` to allow using `snap_sols` when `sample_ik_sols` is called. This is essential for robots with large joint limits, e.g. UR.
**Removed**
* Removed `PicknPlaceBufferTrajectory`'s `ee_attachments` and `attachments` attributes
* Removed `picknplace.planner_interface` (which is there only as an archive)
**Changed**
* Changed `Trajectory` to have `ee_attachments` and `attachments` attributes natively
* Changed `Trajectory`'s `from_data`, making it raise `ValueError` when robot body cannot be found in pybullet
* Changed `MoveTrajectory` to have `element_id` attributes natively
* Changed `picknplace.visualization` to reload and manually assign pybullet bodies to ensure objects get matched correctly
* Changed `build_picknplace_cartesian_process_seq` to inject `ee_attach` info before passing into ladder graph solver, and tag element attachment after solving is finished.