add alternative functors and extra instances
add alternative functors and extra instances

* Alternative class, for functors with a monoid
* instances for Const
* instances for arrows

ekmett/containers,Zigazou/containers,ekmett/containers,iu-parfunc/containers,hvr/containers,Zigazou/containers,ekmett/containers,Zigazou/containers,shockkolate/containers,meiersi/psqueues-old,iu-parfunc/containers,iu-parfunc/containers,shockkolate/containers,hvr/containers,hvr/containers,shockkolate/containers