Mimic sh(1) when handling unset variables.

If an unset variable is used as an argument, it is dropped from the argument list.

For example:

    & commit -m $foo
    error: switch `m' requires a value
    ...
    & :set foo "This is a commit"
    & commit -m $foo
    (a commit is created)

This is one possible solution to #136, but @calleerlandsson or @mike-burns might have a better idea.