Add mode=fixed to setup_training for pre-defined train/test splits
Adds train_structures/test_structures parameters and a mode='fixed' option to calorine.nep.setup_training.
This lets users supply an already-defined train/test split directly instead of going through the kfold/bagging split logic.
Writes directly to a nepmodel/ directory (skipping nepmodel_full/nepmodel_split*).
Overlapping structures between the two lists emit a warning rather than raising, since this may be intentional.
Also drops old-style typing.List/typing.Optional in favor of list[...]/X | None in training_factory.py.