Resetting a cell now takes a template. The template is `memcpy`d onto
the cell being reset. This also solves the problem of `Cell.reset()`
being hardcoded to a particular terminal foreground and background.
Scrolling was refactored to need one less branch. There are now
separate functions for scrolling up/down.
Fixes a bug where the first tabstop would not be displayed properly.
`set_char()` code was merged into the handler `input()` method.