remove close_socket

Clean shutdown (or unclean, if the user desires) is user responsibility
and the library no longer does it.

This commit removes special support for SSL sockets (it no longer needs
the *special* treatment) and open the doors for new types of stream
sockets.

There was the need to specialize close behaviour and this is how it is
being achieved.
fix: not sending extra '\0' char at the end of 505 message
Added new error value: wrong_direction

It'll be useful when the HTTP client is implemented.

There are abstractions that implement both behaviours (client and
server), but once the responsibility (client or server) is chosen, can
only expose a subset of its API. This error code is appropriate in this
scenario.
remove channel_type

This abstraction was actually pretty useless. The channel_type can be
selected upon the first use from the socket and is not necessary to add
an extra argument to its constructor.

If the need to define channel_type arise, then it'll be implemented
again, but for now it's being removed. The reason for removal is not
lack of usefullness alone, but also that current definition is very
poor.