factor out shell code building
wrap env var names in braces in shell output
better quoting for fish
factor out script calling from script generation in shell test
return empty data rather than dieing when shell call fails in test
test shell quoting separately from normal local::lib shell directives

Some shells have special handling for some env vars, such as rejecting
nonexistent directories in PATH.  This is an issue for the fish shell.
We want to test the quoting routines even on strings that aren't valid
paths, so separate out the testing of odd strings from the testing for
local::lib's normal env variables.