zig fmt: simplify and improve consistency of if/for/while handling

The main realization here was that getting rid of the early returns
in renderWhile() and rewriting the logic into a mostly unified execution
path took things from ~200 lines to ~100 lines and improved consistency
by deduplicating code.

Also add several test cases and fix a few issues along the way:

Fixes https://github.com/ziglang/zig/issues/6114
Fixes https://github.com/ziglang/zig/issues/8022
48efa3bcb6Isaac Freund committed on 3/15/2021, 1:55:34 PMparentb4db03d
2 files changedLine totals unavailable