Case classes conversion methods

Vaguely discussed here: https://twitter.com/alxarchambault/status/545628766371069953

Allows to easily convert any case class to:
- an HList (same as `productElements`, but with a type argument)
- a record
- a tuple
- a map
- and any (standard) collection.

Some (HList, record, tuple, map) accept type arguments, that can be more general than the inferred default type argument(s).