bus: allow two different fds for input/output in sd_bus_set_fd()

This is useful so that we can speak D-Bus over a FIFO pair such as
stdin+stdout.
bus: fall back to readv/writev if recvmsg/sendmsg don't work
bus: reuse sd_is_socket() call
bus: when reading a message from the socket, make sure to note down the size
bus: ignore the passed UID on EXTERNAL auth if ANONYMOUS is allowed
bus: when the first char a server receives isn't the NUL byte immediately fail
bus: be more careful when determining credential data

As it turns out SCM_CREDENTIALS is not always supported on socketpair(),
so let's also try SO_PEERCRED then.
bus: always return something in sd_bus_get_timeout()
stdio-bridge: rework stdio bridge to use libsystemd-bus