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.
Merge pull request #112 from AudriusButkevicius/swap

Add Args.Swap command for swapping arguments
Add App and Command argument count checking
'Merge'