Determine size of blacklisted_env_vars statically

blacklisted_env_vars is a static array and its size is thus known at
compile time. So it is not necessary to mark its end with NULL.
Attempt to correct usage of size_t

size_t is assumed to be synonymous with the types int, ptrdiff_t,
ssize_t and socklen_t. It is not specified whether variables of these
types can hold values of type size_t and vice versa. However, it could
be checked at compile time whether these assumptions hold on a
particular system.
Add size_t workaround for FCGI_fread and FCGI_fwrite

FCGI_fread and FCGI_fwrite can return (size_t)EOF. (size_t)EOF is not a
valid value, because EOF is defined as negative and size_t as unsigned.
FCGI_write can also return -1 / size which is also not a valid value. As
a workaround wrapper functions check whether FCGI_fread and FCGI_fwrite
return these invalid value and report an error. However, it could be
that -1 / size and (size_t)EOF are valid size_t values. There is no way
to distinguish this and it is better to fail than to proceed with an
invalid value.
Include <stddef.h>

size_t and NULL are defined in <stddef.h>, so it has to be included.
Correct order of arguments of kill(2)

The signature of kill(2) is the following:

  int kill(pid_t pid, int sig);
Use respective enums instead of unsigned int
Cast char to int for putc and related functions
Cast ignored return values to void

In most cases it would be better to handle potential errors than to
ignore. This will be addressed later. For now cast the return values
to void.
Test pid_t correctly

fcgiwrap uses 0 as an invalid PID value. pid_t is defined as a signed
integer. So testing whether a value of type pid_t is not equal to zero
is not enough to determine whether it is a valid PID value.
Perform explicit tests to determine boolean value

Explicitly performing tests to determine the boolean value of an
expression avoids some common mistakes.
Convert bool condition variables from int to bool
Use '\0' to represent the null character

While both '\0' and 0 represent the null character, using a character
literal for a character makes more sense. Moreover, this suppresses
warnings produced by the standard settings of some static analysis
software.
Check whether optopt is of type char