Add InvariantFunctor (from Scalaz 6)
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