[WIP] Refactor toMap

I propose refactoring `toMap` and `toMultimap` to be more Scala idiomatic. This PR is my initial idea about `toMap`.

Any thoughts?

/cc @samuelgruetter @headinthebox
You should explain how contravariance makes `CanBuildFrom[Nothing, ...]` work. Moreover, having a default value for an implicit seems a bit dangerous at first sight. If there's an implicit in scope, it takes precedence over the default value. But what if there are several matching implicits? Do I get an "ambiguous implicits" error or does it fall back to the default value? Can I find this somewhere in the Scala spec? What relevant implicits are typically in scope when this function is called? Did you invent this pattern of combining an implicit `CanBuildFrom[Nothing, ...]` with a default argument yourself, or are there other libraries which do this as well?