#324 以下、リファクタしました。

isLifecyclePropertyで$.isFunction()による判定を削除
(ここでチェックしていてもライフサイクルイベントに関数以外が指定された場合、not a function呼び出し時にはエラーになるため)

checkXXX -> validateXXX にリネーム

validate関数は一カ所にまとめました

controllerGroupEach, childControllerEachを使用できるところはそれらを使用するように修正

getAncestorControllerPromise,getDescendantControllerPromise,setExecuteListenersFlagで、走査するターゲットが重複することはないので重複チェック処理を削除

useHandlersを参照するのは、bindByBindMap時に参照するように変更。
bindDecendantHandlersはcontrollerGroupEachを使用するように変更

createCallbackForInitで作成するコールバックでvalidateエラーが起きた時にcontroller.dispose()していた箇所を、controller.rootController.dispose()に変更

bindAndTriggerReadyは、triggerReadyに変更し、bindAndTriggerReadyを呼んでいた箇所は、bindByBindMapをcontrollerGroupEachを使って呼ぶのと、triggerReadyを呼ぶように記述しました。
triggerReadyで、postInitPromiseを待つ必要はない(executeLifecycleEventChainで待っているため)ので、whenでの待機処理を削除しました。

initRootAndParentControllerを使っていないので削除