terminal: share font settings across screens

We currently retrieve one font object per screen (which is in fact shared
in the font-layer), but we can also move it one layer up to the terminal
layer. This shares the same font per terminal between all screens.

This simplifies on-the-fly font modifications and speeds up monitor
hotplugging.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
terminal: clear unused margins on each frame

If the terminal screen is smaller than the real screen, we never paint to
the margins. This doesn't hurt as long as we never resize the terminal.
The uterm layer clears all framebuffers during allocation.

However, uterm behavior may change and our terminal may get resized (eg.,
during hotplugging) so we really should clear all the margins.

We now clear them on every frame as it is a trivial task. However, if we
speed up rendering, we should probably set a "needs_clear" flag that
simply clears the framebuffer.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
kmscon: implement dynamic font-resizing via shortcuts

This implements two new keyboard shortcuts zoom-in and zoom-out that
increase/decrease font size of the current terminal.

This is similar to how wlterm does it and allows runtime modification of
fonts.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>