Add Args.Swap command for swapping arguments

The usecase:
my-cli user <USERID> set <FIELD> <VALUE>

Being able to swap `<USERID>` with `set` argument, we can have nested subcommands while preserving all variable arguments along the way.