If EVP_DecryptInit_ex() returns NULL, j is incremented by a random amount in PEM_do_header()

clang warning:
pem/pem_lib.c:472:6: error: variable 'i' is used uninitialized whenever 'if' condition is false
      [-Werror,-Wsometimes-uninitialized]
        if (o)
            ^
pem/pem_lib.c:479:7: note: uninitialized use occurs here
        j += i;
             ^
pem/pem_lib.c:472:2: note: remove the 'if' if its condition is always true
        if (o)
        ^~~~~~
pem/pem_lib.c:446:7: note: initialize the variable 'i' to silence this warning
        int i, j, o, klen;
fix type string conversion warning

ASN1_STRING_data returns an unsigned char *, but strlcat's second
parameter is a const char *
remove unused static datastructures

Neither of these is used anywhere within their object files.
use BIO_write instead of an unchecked write()

write() warns if its return value is unchecked. Replace with a BIO_write
like all of the surrounding code uses anyway.
do not include public headers as though they are local

Avoid having to use -I trickery to find public header files included as
though they are private.
remove parsing of -rand options in openssl apps

Since the random number generator no longer allows being seeded, remove
support for parsing the unused -rand option and the unused random buffer
variables. Better to fail than to be surprised when the RNG seed does not
function as expected.

This fixes compiler warnings about unused random seed variables.
avoid defining struct pqueue typedef twice

with pqueue moving to a private interface, the typedef can occur twice

../include/openssl/dtls1.h:147:25: error: redefinition of typedef 'pqueue' is a C11 feature [-Werror,-Wtypedef-redefinition]
typedef struct _pqueue *pqueue;
                        ^
../include/pqueue.h:63:25: note: previous definition is here
typedef struct _pqueue *pqueue;