stream: Implement with one file descriptor

Instead of paging between two file descriptors, store the stream in one;
with a special "snake" mapping between logical and physical offsets.
Replace stdio caching with pwrite/pread of 64kB units, and manual buffering
on top of the snake layer.

https://bugzilla.gnome.org/show_bug.cgi?id=738601
stream: Compress data with zlib

Compression is implemented in "boa", a new layer between the "snake" storing
64kB units and the buffering layer. Each 64kB unit is compressed separately,
and we rely on the file system leaving sparse blocks.

https://bugzilla.gnome.org/show_bug.cgi?id=738121
https://bugzilla.gnome.org/show_bug.cgi?id=738601
ring: Don't create streams for the alternate screen

https://bugzilla.gnome.org/show_bug.cgi?id=741480
Rebuild box_drawing.h if generator script changes

Avoids build breakage when the format changes.