Refactor command-line processing
Refactor command-line processing

Pave the way for someday using `pflags` or equivalent, by separating
the parsing (which could become merely pflag.Parse()) from the
validation and processing (in main()). This requires (among other
things) use of pflag.SetInterspersed(false) before pflag.Parse() (in
main()) and changing "--" to mean "end of Joker arguments" in all
cases, meaning clients will have to have converted to specifying "-"
for stdin.

Reject unrecognized options.

Allow "--" to mean end of processing of Joker arguments when following
"--expr <expr>" or (new) "--repl", as these cases didn't already
support reading from stdin.

Reject non-Joker arguments (those provided for scripts) when not
actually evaluating a script (in a file or from stdin) or entering a
REPL.

Reject missing arguments to options.

Reject conflicting options ("--lint" and "--expr") or unsupported
combinations, with the exception of allowing "--dialect <d>" when not
linting.

Provide meager "--help"/"-h" support and explain use of EOF to exit
REPL in REPL welcome message.

candid82/joker,candid82/joker,candid82/joker