Lift shared infra out of the vendored stacker fork
Four package-level modules absorb helpers that were either duplicated
across stacker/ and the pm modules or trapped inside stacker:
- errors.CommandError unifies subprocess failure types; ProjectError
moves up from project/errors.py. stacker.git.GitError becomes an
alias so existing stacker call sites keep working; pool.worktree's
locally-redefined GitError is gone.
- subprocess_run.run + format_command_failure replace three copies
(stacker/git.py, stacker/gh.py, pool/worktree.py). gh.py simplifies
by using the auto-raising check=True path.
- sqlite_db.transaction/readonly take an optional schema; project/db
and stacker/db both delegate. StackerDB drops _init_db and its
connect() is now a generator CM that schema-inits on every open.
- output.style/use_color replace the ANSI logic inlined at the bottom
of stacker/service.py.