initialize variable that can be used uninitialized

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

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.
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.
do not pretend to support -rand in apps

Remove support for parsing the unused -rand option and the unused random
buffer variables.
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.