add arrow-apply
clean up hierarchy
implement ArrowApply for kleisli