factor out ArrowFirst
add arr-first implementation
fix monad bind
add kleisli tests