Generalised endomorphic arrows

This patch introduces a type `Endomorphic[A]` to wrap a value of `A =>: A`, with an associated monoid instance when `=>:` is a Category: mappend is `<<<`, and mzero is `id`.

(This is the same monoid as can be derived from the non-implicit `def monoid[A]: Monoid[A =>: A]` on `Category`; `Endomorphic` is essentially a newtype to aid in correctly choosing this monoid implicitly.)

A useful case is when `=>:` is `Kleisli[F, _, _]` (pseudo-syntax) for some monad `F`.

A bit of history: Myself and @S11001001 originally did this work on [another branch](https://github.com/bmjames/scalaz/commits/endomorphisms), and redefined the existing `Endo` to be an alias `Endo[A] = Endomorphic[Function1, A]`. However, this broke some existing code using `Endo`, and introduced the requirement to import the Arrow instance for `Function1` any time `Endo` was used. I was unsuccessful in finding an elegant way to avoid the breakage, so I have reworked `Endomorphic` as a distinct type, and left `Endo` as it was.