requires #337 - run() should convert to Popen params for compatibility with SubprocessCommand - run() should support legacy_params (existing) to deprecate safely <details> ```python class CommandPopenMixin: _run_fn = Subprocess.Popen class CommandRunMixin: _run_fn = Subprocess.run class Command: _run_fn = SubprocessCommand class Command: _run_fn = SubprocessCommand This turns git command into a subprocess command factory: class Git(Command): ... git_factory = Git(url='...') status_cmd = git_factory.status() status_cmd.run() status_cmd.Popen() Subprocess.Popen Subprocess.run ``` </details>