Support required and optional arguments

I supported a new field, `Args`, to `cli.Command` to specify required and optional arguments.

For example, we can write like this.
```
Name: "get",
Args: "<name> [id]",  // name is required, id is optional
Action: func(c *cli.Context) {
        name, _ := c.ArgFor("name")
        id, b := c.ArgFor("id")  // b is false if 2nd arg is not given
},
```

And the usage text appears like this.
```
USAGE:
   command get <name> [id]
```

I'm not sure whether the field name `Args` is good or not. I'm OK to change any names I added if you guys hope it.

Best,