Fix harmless text error shown when 'vars' doesn't define BATCH var

While BATCH is sanity-checked after processing the vars file, the
notice() call is made before this check. This fix prevents the case
where BATCH is left undefined in the 'vars' file.

Additionally, made small cleanup to the way the invalid BATCH warning is
printed.
Comment out defaults in vars.example file for easier spotting of changes
Process cert extensions by referring to an external type file

This avoids the need to make code changes to modify extension values,
enables users to define their own new or updated values, and supports a
'COMMON' type that is appended before the specific extension values.

By default the new $EXT_DIR env-var looks in the $EASY_RSA dir for the
'x509-types' folder with these cert type references, but this can be set
in vars or the environment to allow a particular PKI to have custom
extension settings.
Remove code/vars CDP support since cert extensions now support this

This reverses commit 3335fd3 that added in a $CRL_CDP env-var. A CDP can
be handled by the x509-types directory now and an example for CDP use
has been included in x509-types/COMMON.
Remove unused PKCS11 config

The variables in easyrsa and vars.example were removed as well as the
PKCS11 setup in the openssl config; the current setup was not functional
cross-platform and is better handled in a contrib/ structure if it ever
goes back.
Replace EASY_RSA_EXPERT with per-feature disable overrides

The new env-var is in the format EASY_RSA_NO_FEATURE where FEATURE is
some feature to disable at runtime. Current support is for the following
choices: VARS or UMASK. This is an advanced option.
Indent main command processing case loop
Change global options syntax to --opt=val format; add error checking

This fixes an issue processing options for which a required value was
omitted. Error checking now reports this error to the user.
Fix an instance where grep was used; replaced with "$GREP" syntax
Move EXT_TEMP_FILE under PKI_DIR

This temp file was previously stored under the EASY_RSA dir, and this
potentially isn't safe when multiple operations are concurrently
performed on different managed PKIs out of the same EASY_RSA dir at the
exact same time.
Add global option for --subject-alt-name

This support enables defining a Subject Alternative Name
(subjectAltName) on a per-cert (or req) basis from the command-line.
Add a check to sign_req() for valid arguments

This makes the sign-req command provide better messages when a user
forgets one, especially the cert type.
Improve die, warn, notice, and confirm function for better visual layout

This unifies the spacing options for all the error and notify functions
so input is displayed with the expected visual layout regardless of how
the text input was passed.
Remove error references to Easy-RSA as die() already includes it

The messages themselves no longer need to contain the string Easy-RSA as
the function itself handles adding header-lines that include it.
Add trailing newline to notice text that comes before implied exits
Store the openssl command verification so it only occurs once
vars.example comment text changes for alignment & re-wording

Minor re-wording, and alignment changes for consistency.
Don't override env-vars that are defined to null (blank)

This updates how set_var() works when the existing variable is defined
and blank (null.) Before this change, it was impossible to override a
built-in default with a blank string due to the -n test.