Only raise an error in IOStream:connect if we don't have a 'connect fail' callback.

- Instead of calling the 'error callback' _and_ raising an error, we call the 'error callback' _or_ raise an error if the 'error callback' is nil.
- Bail if IOStream:_handle_write is called with an invalid socket. (Have to do this as a result of the change above)