Solve conflicting "chunks" declaration

This solves an issue whereby importing both `std.range` and `std.stdio` makes the use of the word `chunks` a "conflicting declaration" (not "ambiguous"): This is because `chunks` was both a struct and a function name, so template restraints did not help.

Fixes:
- Add restraints to `std.range.chunks`
- rename the struct `std.stdio.chunks` to `std.stdio.ChunksImpl`, and create the function `std.stdio.chunks` which returns an instance of a `std.stdio.ChunksImpl`.

Note: `std.range.chunks` was designed for `foreach` use *exclusively*. As such, I doubt anybody used the type itself as a type, and I think possibility of breakage is very very low.