Split from #4583 There are two open questions, opinions appreciated: - Should this material be part of `Init` or `Std`? - Should the typeclasses be in the `Std` namespace?