Util.pm/CLIUtil.pm: clean up abnormal exit code handling
When the setup_pager function arranges for STDOUT to be paged,
it was causing the exit code of the process (when using the
special "become child" feature) to be that of the pager rather
than the program itself. Fix this to capture the exit status
of the real program and then exit with that value instead.
When the noFatalsToBrowser function disables the CGI redirection
of die from the unreadable-when-dumped-on-the-terminal output
to something more legible, it inspects the various error variables
to determine what exit code it should use (if it's not in an
eval block).
In both of these cases, be careful to make sure that the exit
code used is in the range 0..255 inclusive and furthermore, that
if the exit was caused by a signal that it's the 128+signal_num
value rather than the bare signal_num value.
Force unexpected exit codes outside the 0.255 range to be 255.
Signed-off-by: Kyle J. McKay <mackyle@gmail.com>