two step initialization
Add callback guard
codestyle consistency
initialzie pipe handle even the though the callback is not set

this will allow us to handle scenarios like

uv_connect(..., NULL)
uv_write(..., NULL)
uv_shutdown(..., CALLBACK)

which will just queue the write and shutdown and execute them
once everything is done.