Add InvariantFunctor (from Scalaz 6)
Adds traverseM to traverseOps

A utility method for the very common F[A].traverse(f: A => G[F[B]]).map(Monad[F].join) : G[F[B]] pattern.
Trivial: Fixes the scala warning:
  'This catches all Throwables. If this is really intended, use `case e : Throwable` to clear this warning.'

by adding 'case e: Throwable' to catch clauses that are meant to catch all Throwables and removing one instance
where the exception is caught and thrown, which is the equivelant to leaving the statement out.
remove unnecessary type parameter foldMapIdentity
Update Memo.scala

make mutableMapMemo(m) / immutableMapMemo(m) public again so they can be called with other Map classes e.g. ConcurrentMap
NonEmptyList: add init and last + test for init
NonEmptyList: add test for last
fix Lens comment.

type parameter `F` is already removed 001047eea5a469f
fix PLens comment.

type parameter `F` is already removed 001047eea5a469f
Merge pull request #381 from xuwei-k/lens-comment

fix Lens and PLens comment
Merge pull request #380 from divarvel/nel-init-last

Add init and last to NonEmptyList
Merge pull request #379 from refried/patch-8

Update Memo.scala
Merge pull request #377 from xuwei-k/foldMapIdentity-type-param

remove unnecessary type parameter foldMapIdentity
deprecate `foldMapIdentity` in favour of `fold`
tuned
Merge pull request #368
Merge pull request #375 from OleTraveler/thowable-warning

Trivial: Fixes the scala warning:
Contravariant and Functor extend InvariantFunctor

* implement `xmap` in Functor and Contravariant
* change and run gen-type-class
* update package docs
tuned law hierarchy
Merge pull request #351