Be lenient in charAt, return 0 for OOB reqs.

I think this is a case where leniency is likely to result in simpler logic and
reasonable edge cases (hah!), rather than surprising weirdness.
Two bits.

Get blocker from ctx in OneLinerWithArgs, and have prevNonWS automatically
compute an expanded block if one requests prevWS outside the supplied block.
It's natural the pass in the current block, but sometimes when you're backing
over lines you end up outside that block and we'd rather spend the cycles to
compute the proper block than fail weirdly in those cases (or force the caller
to check and expand the block themselves).