Added groupBy1 and renamed groupByM to groupWhenM

Added `List.groupBy1` which is like the scala standard library's `List.groupBy` method except that the returned `Map`'s values are `NonEmptyList`s. So for example:

```scala
List("London", "Munich").groupBy1(_.length) //Map(6 -> NonEmptyList(London, Munich))
```

This aids in exhaustiveness checks and is more correct.

Additionally, after Lars' suggestion, the commit includes the renaming of `groupByM` to `groupWhenM` for consistency with both the standard library and `groupWhen`