refactor: collapse BaseRunner/BasePredictor into single class with alias
BaseRunner is now the single real class. BasePredictor = BaseRunner is
a backwards-compatible alias. predict() is a bridge method that calls
run(), eliminating duplicated setup/scope/record_metric logic.
The runtime still detects which method the user overrode (run vs predict)
via MRO walk and calls it directly.