avoid allocate new Function1 objects

I had to drop all conflicting changes; for Kleisli, they would not have
been helpful.
Conflicts:
	core/src/main/scala/scalaz/Kleisli.scala
	core/src/main/scala/scalaz/NullArgument.scala
	core/src/main/scala/scalaz/NullResult.scala
Adds inexplicably missing filter to OptionT
fix #662 "Multiple evaluation of arguments in tuple instances"