Introduce eval mode

When running in eval mode, if the command found is a sh type command, it
will simply be run, otherwise, sub will output a second call to sub
without the --eval flag and the same parameters as the current call.

This is done so that the shell can always eval the output of sub --eval
and it will alway do "the right thing". It simplifies the wrapper
function and helps avoiding duplication of the logic that does the
command search, which should be within the script and not on the
wrapper.
Fix sub help issues