lib/socket: fix, update style and intro features

This is a pretty big update to the `socket` module. It appeared to be broken. Did someone test it since the last modifications to streams and read_line?

* Update and cleanup the style in the first 3 or 4 commits.
* Fix (some of) what was broken.
* Revamp the API with a distinction between listening sockets and stream sockets (making it closer to Ruby and C#). This is the most important commit "lib/socket: distinguish `TCPServer` from `TCPStream`".
* Intro additionnal features used by Mineit: non-blocking `TCPServer` sockets and `TCPStream::flush`.

Still to do:
* Add `Error` support to the API.
* Rename `socket_c` to `native_socket`.
* Fix `SocketObserver` and underlying C implementation.
J'ai songé à mettre un mode `blocking` sur `TCPStream` mais ça pourrait être dangereux. Dans le cas où tu fais:

~~~
var s = new TCPStream...
s.blocking = false # Set TCP_NODELAY
s.write "a"
s.write "b"
s.write "\n"
~~~

Ça pourrait envoyer 3 packets au total, chacun attendant après le ACK du précédent. Avec le flush je m'assure d'envoyer que ce qui est déjà dans le buffer seulement.

Je passerai au UDP, pour MMOMineit :stuck_out_tongue: pour l'instant rien ne vaut la simplicité et fiabilité du TCP!