Improve visible line rendering, MultilineContentI, ast.Fprint.

Renders zero lines when completely off screen (instead of 1 line).
Does not crash with CanvasWidget moved.
MultilineContentI interface supports accessing lines beyond valid range
(returns sane values). With this API, line lengths can be quickly
calculated and storage can be cut in half.
Use ast.Fprint to display ASTs.