#557

fix(cli): parse command flags in one place and exit 2 on usage errors

Openlahfirwants to merge intofrom
  1. Each command parsed its own flags, so --flag=value failed, typos like prune --forc were ignored and prune still ran, extra arguments were dropped, and usage mistakes exited 1 like real failures.
  2. Commands now share one parser and one UsageError, so --flag=value works, unknown flags suggest the closest match, extra arguments are rejected, and usage mistakes exit 2.
  3. Builds on #556.