Fixes https://github.com/spring-projects/spring-integration/issues/3705 Closing/destroying `ChannelOutputStream` object does not close the selector therefore it retains redundant pipes/FD that cen be seen using lsof command or ls /proc/ * Close `TcpNioConnection.ChannelOutputStream.selector` in the `ChannelOutputStream` * Close `TcpNioConnection.ChannelOutputStream` when connection is closed * Code style clean up **Cherry-pick to `5.3.x` & `5.4.x`**