API changes
1. `add_positions` is now dispatched inside of `add_position` and supports numpy arrays.
2. `submit` is not`run_async` to be more clear in terms of the behavior relative to `run`.
3. `load` and `save` replace `load_batch` and `save_batch`, removing `load_program` and `save_program` until we unify serialization architecture.
Bug fixes mostly involve compilation errors when lowering to the Blqoade Emulator IR.