create Unix endpoint class
new error handling procedure

Use a macro (and some classes) to give more information about errors,
including source tracking.
use type-safe 'enum class' for ShutdownMode
create Socket::send_all methods
rename/refactor host lookup functions and create ip_port_t typedef
update test programs