Refactors Command to set all attributes within the init method
Separates parsing from command execution

and adds extra tests.

Command.parse calls run() internally.
If it actually runs the command, the method should be something like
"execute".
Besides, having an independent parse function which limits itself to
command parsing improves testing.
Removes unnecessary __getattr__ overloading in Arg

Replaces it with plain attribute setting