add writeWithRetain
separate ChannelRegisterTask, ChannelRegisterTask from
InboundMessageTask
check channel alive before write