Move openssl(1) from /usr/sbin/openssl to /usr/bin/openssl, since it is not
a system/superuser binary. At the same time, move the source code from its
current lib/libssl/src/apps location to a more appropriate home under
usr.bin/openssl.

ok deraadt@ miod@
Update regress to follow openssl(1) move.
remove nginx references
Implement table-driven option parsing that allows an application to
specify what its valid options are and where it wants them to be stored.
This also allows for usage to be generated, almost for free, ensuring
that the options and usage are automatically kept in sync.

This will allow for a single option parsing implementation, rather than the
current one-hand-rolled-option-parsing-and-random-usage-implementation per
application.

As a starting point, port the openssl(1) rand application to the new option
parsing and usage (along with associated code clean up).

With input from doug@.

ok bcook@ doug@
Add an option type that handles argument to integer conversion.
Reset the config struct before calling options_parse(), otherwise config
options from the previous run stick in interactive mode.
Convert openssl(1) prime to the new options/usage handling.
preserve errno value on success.

If getrandom returns a temporary failure, make sure errno is not polluted when
it succeeds. Thanks to deraadt@ for pointing it out.
Add option handling for input/output formats.
Add option handling for ordered flags.
Ensure that a format option argument is a known specifier.
Given the usage option name/argument name width a few more characters.
Convert openssl(1) crl to new option/usage handling.
Add option handling with a callback function for argument processing.
openssl_setup() calls SSL_load_error_strings(), which happens to call
ERR_load_crypto_strings() - as such, we do not need to call the same
function from most of the applications.
OpenSSL_add_all_algorithms() is called from openssl_startup() - it does not
need to also be called from some of the applications.
Move the callback function pointer outside the opt union so that the option
values are useable by the function. Also provide an option type that calls
a function without consuming/passing an argument.
Convert openssl(1) version to new option/usage handling.
Improve option usage output.

If the option/argument string exceeds the given width, add a hanging indent
prior to displaying the description. Also, if the description includes
newlines, wrap and indent for each newline so that the indentation is
correctly maintained.
Convert ecparam to new option/usage handling.