switch debug logging to lager
fix socket encoding logic and adjust test suites to match

The core FSM logic always added an empty frame in front of
every outgoing packet and stipped it from incomming packets.

The correct logic is for REQ and REP sockets to add the empty
frame for outgoing packets and EXPECT an empty first frame on
incomming packets and strip that frame. All other sockets
pass the frames as is.
update travis for Erlang 17.0 and 17.1