optimize groupWhen

Cherry-picking 6a95fa4
optimize mapAccumLeft and mapAccumRight. avoid stack overflow

Cherry-picking 7b183f4
Squish `Unapply` implicitNotFound msg into 1 line.

I hit this issue when trying to generate a
[Kapeli Dash](http://kapeli.com/dash) docset for Scalaz
using [this](https://bitbucket.org/inkytonik/mkscaladocset).

Issue: Scaladoc generation first checks to see if the
message is >= 36 characters long - if so, instead of
showing a big whopping message in the HTML it shoves
it into a tag attribute instead with the motivation being
you can hover your mouse over it to read the full message.

However, the generation process will also replace any
newlines with the HTML newline, `<br />`. When it goes
to turn `Unapply`'s `implicitNotFound` message (which is
>= 36 characters long *and* multi-line) it translates
the end of each line into `<br />`, then puts it into a
tag attribute. As far as I know, angle brackets are not
allowed in HTML tag attributes, but Scaladoc generation
will gladly generate it anyways.

My proposed solution is simply - squash it all down into
one line.

Cherry-picking pull request #604 (d565749)
override DisjunctionInstances2#map

Cherry-picking 380f8f3
override mapInstance#map

Cherry-picking 4dabe47
override OneOrApplicative#map, OneOrTraverse#map, OneOrTraverse1#foldMap1

Cherry-picking db3082f
override ValidationApplicative#map

Cherry-picking 3e8a671
optimize Foldable1 methods.

use uncurried methods for avoid allocate `Function1` objects.

Cherry-picking 3cbed07
override DisjunctionOrder#equal, ValidationOrder#equal

Cherry-picking e9cc8ab
fix Traverse#traverseS, sequenceS, traversalS

Cherry-picking pull request #616 (11a2dbd, 6f17f44)
Specialized biases for Bi{functor,foldable,traverse}.

Cherry-picking 9688770
optimize Reducer instances

Cherry-picking 78c4401