Don’t trim empty string arguments when building command

Empty string arguments are removed when building an executable command, causing problems like https://github.com/github/hub/issues/725. However, we need to remove empty string arguments constructed from the commands layer, e.g., https://github.com/github/hub/blob/master/commands/browse.go#L112. We fix it by moving the removal logic to `Args.ToCmd`.

 The Args file is a bit of a mess now. I already have a better design in mind. Will do that in another PR.
> I don't know about Go interface, but would that be possible?

Yes, it's possible and we're already [doing that](https://github.com/github/hub/blob/master/cmd/cmd.go#L77). The code you pointed at [parses the hub arguments into subcommand and its arguments](https://github.com/github/hub/blob/master/commands/args.go#L144-L168), which is used in the [runner](https://github.com/github/hub/blob/master/commands/runner.go#L74-L77) or is manipulated in individual `hub` [command](https://github.com/github/hub/blob/master/commands/pull_request.go#L112-L115). The  `Args.ToCmd` method specifically reconstructs the parsed subcommand and its arguments into a command that we could shell out to, after modifying the arguments in our command chain. However, there's one special case: if the command to be reconstructed doesn't have subcommand, e.g., `echo`, the subcommand (`Args.Command`) will be empty and we need to check empty, an example is [the browse command](https://github.com/github/hub/blob/master/commands/browse.go#L112). Hopefully this makes sense.

I've a better design in mind about this. But I may propose it after we released `2.x` considering lots of places will get changed.