rocksock_operation(): do not use select() for SSL connections

when we use SSL, we can't rely on select() not timing out because
calls to other SSL IO functions (such as SSL_peek,read,write) may
already have cleared the socket and buffered whatever data was
available. in that case it's sufficient to just call the read/write
funcs.
whether the timeout has any effect tho needs to be investigated.
add cyassl ssl backend

use both USE_SSL and USE_CYASSL in CFLAGS so rcb pulls in the right
files. if built without rcb, USE_SSL is sufficient, and
rocksock_cyassl.c can be built in place of rocksock_ssl.c.

this implementation uses a custom feature added to cyassl which
hasn't been merged upstream yet:

https://github.com/cyassl/cyassl/pull/64

a 2.8.0 backported patch was released in sabotage linux:
https://github.com/sabotage-linux/sabotage/commit/e7935380d71
fix rocksock_peek for both ssl backends

the semantics are now roughly equivalent to rocksock_peek on a
non-ssl socket. when there's data to read however, the internal
calls to SSL_peek will cause blocking, this shouldnt hurt much however
as you would do a blocking call to read the available data anyway
immediately after getting the peek result.
in case there's no data on the socket, it will not block and return
immediately.
update README
rocksock_readline: act properly on remote disconnect
rocksock_ssl: respect timeouts

the calls to setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, ...) in
rocksock_operation() cause openssl's IO functions to return
ERROR_WANT_READ/WRITE when the timeout on the socket expires.

now the timeouts should be respected everywhere and the semantics
of rocksock with or without ssl equal.
rocksock_ssl_strerror(): remove redundant SSL_get_error call

the translated error number is already passed to the function,
because otherwise the lasterror.error number which is set in
rocksock_set_error is always -1.
translating it twice could give wrong results.
rocksock_cyassl: fix timeouts on IO and redundant error translation

analoguous to the last 2 commits to rocksock_ssl.c
make libulz dependency optional

at least for the client code, rocksockserver.c still relies on it.
rocksock: use O_CLOEXEC on socket
update README
rocksock_variables: whitespace cleanup
treat orderly shutdown as error

this makes it easier to deal with disconnects (for example when
automatic reconnect is desired), as you can treat them as every
connection error without having a separate codepath for the
"orderly shutdown" special condition.

a library using rocksock that does peek and read in the same
function would have to return both values if the error handling
code was in the caller, as the value 0 in the recv_bytes argument
could either be interpreted as a disconnect, or a peek when no
data was waiting. now it can reserve the meaning of 0 for its own
purposes.
add rocksock_strerror()

and factored the code out from rocksock_set_error().
move rocksock_variables into rocksock_strerror.c
waste less space for error map in small error msg mode

additionally fix omitted semicolon for the last added error
that caused the strings "23" and "24" to get concatenated.
add rocksock_strerror_type
get rid of redundant RS_ET_NO_ERROR error type

we have an own error number for "no error", 0, so we can just as
well return RS_ET_OWN.
openssl backend: fix gcc warning about unused label
fix compilation via Makefile for ssl backends

the 2 backends got into each others way by defining the same symbols.
we now require USE_CYASSL or USE_OPENSSL set in CFLAGS to build
one of the backends, plus USE_SSL which enables the SSL support
in the core code.