Socket implementations

This pull request goes a bit farther than #357 and extracts the two socket implementations (`ext/sockets` and `streams` based) for both client *and* server sockets. The latter are used as default clientside implementation, while the first are the default for serverside operations (no BC-break!)