fix(ext/node): free the external on the remaining node:http abort paths
Extends the uncommitted-abort external free to the two other abort sites in the
dispatch wrapper: socketDestroyedBeforeDispatch (a prior pipelined handler
destroyed the shared socket) and the on-cancel no-listener path. Like
ServerResponse.destroy, they completed the record via op_http_abort_response but
never consumed the external, leaking the record + its server_state clone so the
server never drained. Null the JS refs (mirroring nativeCommit) and free with
op_http_close_after_finish.
Also make writeHead throw ERR_HTTP_INVALID_STATUS_CODE (matching Node) instead
of ERR_INVALID_ARG_TYPE for out-of-range status codes.
Fixes node:http test-http-incoming-pipelined-socket-destroy (hung).