升级到 0.0.9-SNAPSHOT fix LOG message for FAILED toString(), add
ChannelFlow before this
修正 ChannelFlow.toString 显示属性，去掉 通过 currentHandler().getName() 输出的 state
信息，因为 currentHandler() 只在flow 被执行时，才返回有效内容，否则是null。而 toString
的输出需要考虑多线程调用时的稳定性和有效性。
依赖 jocean-event-api-0.0.6-SNAPSHOT，重构httpclient部分的实现代码，将原有通过
MediatorFlow 实现的 协调 Guide & Channel 之间的业务逻辑，调整为主要由 Guide & Channel
之间直接通讯完成。MediatorFlow
只负责多个Guide之间的优先级排序，将Guide按照优先级按顺序先后安排与Channel的绑定交互。 

新增事件：    
//  from mediator -> guide
NOTIFY_GUIDE_START_SELECTING

//  from guide -> channel
RECOMMEND_CHANNEL_FOR_BINDING

废弃事件：
//  from mediator -> guide
NOTIFY_GUIDE_FOR_CHANNEL_RESERVED
    
//  from mediator -> guide
REQUEST_CHANNEL_PUBLISH_STATE

在GuideFlow 中新增 SELECTING 状态
细化日志，删除冗余代码
完善 MediatorFlow业务逻辑: 在有Channel 切换状态为 Unbind 时，尝试对触发优先级最高的 pending's
guide的 select channel动作；定时触发优先级最高的 pending's guide的 select channel动作。
修改 ChannelRecommendReactor.recommendChannel 中的第一个参数名从 status 更改为更合适的
level(recommendLevel)； ChannelFlow 业务逻辑流程中新增 recommendId，用于标记特定的
recommend动作，每次 recommend 动作均会更新该标识，而在事件 REQUEST_CHANNEL_BIND_WITH_GUIDE
的处理方法中，都会校验GuidFlow传回的 recommendId，将其与当前 _recommendId
最新值作比较，只有值相同才表明是有效绑定的响应，执行后续逻辑，否则通过抛出EventUnhandleException异常的方式来中断该次无效绑定动作。
调整格式，在ChannelFlow中的 BindedBizStep 的 RECOMMEND_CHANNEL_FOR_BINDING
事件处理中，对于不符合 canbeInterruptByHighPriority 这一条件的状态，增加用 throw new
EventUnhandleException() 方式，通知 事件框架 对 发出事件的GuideFlow，触发其 Unhandle处理过程
GuideFlow性能优化：将 startSelecting 方法实现中的循环内 产生对象，重构为提取到循环之前产生一个循环内可重用的
Eventabe 对象 recommendEvent
ChannelFlow
修复Bug：BindedBizStep.onRecommendChannel实现中，canbeInterruptByHighPriority 为
false的情况下，没有 抛出 EventUnhandleException，反而在外层
reactor.isRecommendInProgress
为false，冗余的抛出了EventUnhandleException。笔误所致。修正实现。将
异常EventUnhandleException的抛出，挪到 canbeInterruptByHighPriority
这层逻辑判断的else处理分支中。
移除 无用类 HttpRequirementImpl ，在HttpStack中增加 区分 guide & channel 的
EventReceiverSource 传入参数。
HttpStack 暴露运行时 状态信息：最大HTTP连接限制; 当前所有的HTTP连接(闲置的 和
被GUIDE占用的)，已经被GUIDE占用的HTTP连接 以及 处于挂起状态的GUIDE数目
fix  typo: notifyPendingGuidSelectChannel =>
notifyPendingGuidSelectChannel;
增加 pending guide 被处理的机会，在前一个guide 成功attached 后，触发
notifyPendingGuidSelectChannel事件
用 Mediator 代替 MediatorFlow 实现 协调guide & channel 的业务逻辑，从原先的事件处理方式 更改为
多线程下可重入的方法调用
移除冗余的start bind channel TRACE 日志
fix bug: [channelflow-flowexecutor-2-thread-27]  WARN
|-o.j.httpclient.impl.ChannelFlow:733 - exception when
_channelDetacher.detach, detail:java.util.NoSuchElementException:
org.jocean.httpclient.impl.HttpUtils$HttpHandler
	at
io.netty.channel.DefaultChannelPipeline.getContextOrDie(DefaultChannelPipeline.java:914)
	at
io.netty.channel.DefaultChannelPipeline.remove(DefaultChannelPipeline.java:296)
	at org.jocean.httpclient.impl.HttpUtils$1.detach(HttpUtils.java:296)
	at
org.jocean.httpclient.impl.ChannelFlow.closeAndDetachCurrentChannel(ChannelFlow.java:731)
	at
org.jocean.httpclient.impl.ChannelFlow.access$17(ChannelFlow.java:721)
	at
org.jocean.httpclient.impl.ChannelFlow$6.onBindWithGuide(ChannelFlow.java:600)
	at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at
org.jocean.event.api.internal.DefaultInvoker.invoke(DefaultInvoker.java:80)
	at org.jocean.event.api.BizStep.process(BizStep.java:377)
	at
org.jocean.event.core.FlowContextImpl.dispatchEvent(FlowContextImpl.java:470)
	at
org.jocean.event.core.FlowContextImpl.dispatchPendingEvent(FlowContextImpl.java:289)
	at
org.jocean.event.core.FlowContextImpl.access$1(FlowContextImpl.java:267)
	at
org.jocean.event.core.FlowContextImpl$1.run(FlowContextImpl.java:523)
	at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
	at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:744)
解决思路：在channel.close前，调用 channelDetacher释放 channel对 EventReceiver 的依赖
移除过时的事件定义
调整 Channel Guide 中绑定的 Requirement 的 toString 信息，便于调试
1. fix bug: 对于实际上匹配的既有domain 的 uri，因为缺省端口号没有明确写出(http-80,
https-443)导致判断为不同的domain，而对于redommend消息，误返回recommend level 为
IDLE__BUT_NOT_MATCH的情况，具体日志如下： 
01:53:46.137 [nioEventLoopGroup-2-1] TRACE
o.jocean.httpclient.impl.ChannelFlow - channelFlow(ChannelFlow [id=1,
channel=[id: 0x361404bd, /10.0.3.15:41442 =>
img.hb.aicdn.com/60.12.107.2:80], bindedRequirement=null,
domain=http://img.hb.aicdn.com:80, guideBindingId=ValidationId
[_currentId=2], httpClientId=ValidationId [_currentId=2],
recommendId=ValidationId [_currentId=2], channelDetacher(not
null)/connectFuture(not null)/reactor(null),
guideReceiver(null)])/httpchannel.IDLE_ACTIVED/_recommend_channel_for_binding
recommend self as IDLE_BUT_NOT_MATCH for
requirement((priority:-1,uri:http://img.hb.aicdn.com/2df899a70274786a30d1c86dbff4210e1365ddc62d889-hgutb9))
2. 在HttpUtils.HttpHandler.channelRead0 增加 TRACE 日志
更新 netty 依赖到 4.0.23.Final 版本(解决问题的版本为 4.0.20.Final)，解决 https
在特殊情况下，握手完成后，解析服务端发过来的数据出现无限循环，并导致频繁GC的问题。导致https信令交互无限等待的BUG。
jocean-rosa-0.0.9 release: 依赖 jocean-idiom-0.1.2-release &
jocean-event-api-0.0.6-release