Add process1.(maximum|minimum)(|By|Of)

This adds the following on process1:
 - maximum
 - maximumBy
 - maximumOf
 - minimum
 - minimumBy
 - minimumOf

These emit a single value if their input is non-empty, and no value if it is
empty. They are similar to the functions on scalaz.Foldable:
https://github.com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Foldable.scala
Align maximumBy with scalaz.Foldable.maximumBy

before:
  Process("ab", "cd", "ef").maximumBy(_.length) == Process("ab")

after:
  Process("ab", "cd", "ef").maximumBy(_.length) == Process("ef")
Merge pull request #116 from fthomas/maxmin

Add process1.(maximum|minimum)(|By|Of)