- [ ] Modify `__str__()` of commands to print all the parameter that they hold instead of printing valid gcode and update tests - [x] Move `CommandVector` to `address.py` and rename to `AddressVector` - [x] Introduce `post_processor` and `optimizer` classes - [x] Optimizer methods: - [x] `remove_any_axis()` - [x] `remove_optional_axis()` - [x] `remove_modal()` - [x] `remove_feed()` - [x] `add_space()` - [ ] Optimizer tests - [ ] Post-processor methods: - [x] `rapid()` - [x] `line()` - [x] `arc()` - [ ] `home_position()` - [ ] `safety_block()` - [ ] `start_sequence()` - [ ] `stop_sequence()` - [ ] `program_pause()` - [ ] `tool_change()` - [ ] `header()` - [ ] `footer()` - [ ] Post-processor tests: - [ ] Implement `to_gcode()` in post_processor and update tests