Add a task
Divide code cleanly between ssl and non-ssl versions
Replaced internal opaque types by structs.
Expose external nsock types as pointers to the internal structures instead of void pointers.