Clean up ExitCode and add ShellStatus

moved types into Plush.Run.Types
moved and rename common type functions into Plush.Run.Types (exitCodeToInt, etc...)
moved utilities into Plush.Run.Posix.Utilities
added ShellStatus (though not yet used)
added Returnable type-class so exitMsg and friends can be used with both ExitCode and ShellStatus
had to adjust imports on quite a few files... but oh well!
use ShellStatus throughout execution, handle shell errors

most functions in  Execute.hs, Command.hs, and Script.hs now return ShellStatus
utility functions for sequenced execution in Utilities.hs changed to use ShellStatus
  - this means that they halt on non-normal status return, not ExitFailure
execution now properly threads and handles shell errors (StError), which stop execution
redirection and variable errors converted to shell errors (as they should be)
built-in utilities still return only ExitCode, so several small changes to convert to/from ShellStatus
enable special built-in utilities to return ShellStatus rather than ExitCode

a small shuffling of where the type ShellUtility was (out of ShellState into Builtins.Utility)
making Utility type and stdSyntax be polymorphic in return type
now, several small changes from the last commit to builtins that had to convert to/form ExitCode can now be undone, as these builtins can return ShellStatus values
control built-ins: break, continue, return, and exit

tests for break, continue, and return
handling return from scripts and functions
handling exit from main (but not yet from webui)
N.B.: handling for break and continue was in prior commits,
	just untested until now
small lint cleanups to ShellExec.hs