hush: when a variable expansion is empty, don't drop the parameter

The following shell command fails:

if test -z "$x"; then echo "zero"; else echo "non-zero"; fi

(assuming $x does not exist, it prints "non-zero" rather than "zero").

... since "$x" expands to nothing, and the argument is completely
dropped, causing too few to be passed to -z, causing cmd_test() to
error out early.

This is because when variable expansions are processed by make_string(),
the expanded results are concatenated back into a new string. However,
no quoting is applied when doing so, so any empty variables simply don't
generate any parameter when the combined string is parsed again.

Fix this by explicitly replacing any empty expansion with an empty pair
of quotes, so that an argument is still generated.

Reported-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
---
Hmm. I wonder if this causes other problems, such as:

if test -z $x; then echo "zero"; else echo "non-zero"; fi

I guess we should only quote the expansion if the input string had quotes
around the text being expanded, but I'm not sure if we can know that.
Perhaps more investigation is needed:-( Although... I /guess/ that case
is rarer, so this patch still improves things?