added callback invocation at startup

plugins that want to know the screen size at all times
will need this because otherwise they would only get
the screen size when a sigwinch was received
fixed some bugs in rect_set

typo "col" for "rect->col_start" was preventing some rectangles
from getting extended past the first row.

also, turning off cells before we have confirmed that the row
the cells reside in are going to be part of this rect was just
straight up wrong :(
improved child IO loop

 - force_refresh and just_refreshed did not need to be struct variables
 - inter_io_timer and refresh_expire were just a hacky way of trying
   to describe a refresh rate, so i simplified it into just a
   timer that enforces a maximum refresh rate (aside from events
   which force a refresh)
 - whenever a child gets input, it is common for the child process
   to generate some output in response to that input (i.e. shell).
   thus we want to force a refresh on the next child output event
   so that interactivity is as fast as possible
term_win: flush damage whenever refreshing

this ensures that even if no libvterm damage has been flushed, any
damage requested by a plugin will actually get redrawn.
use static var to prevent screen_dims_changed test from running more than once
improved I/O parameters for reading master pty

use bigger reads and bigger buffer for more efficiency.
(not sure why it wasnt able to read more than 512 bytes
per read before).
potentially fix mutex lock error

it seems its somehow possible for handler_chld
to be invoked while it is being shutdown which causes
it to exit while still holding the lock for g_tchild_table.

in this change, the shutdown procedure keeps the desc lock
until after it sends the cancelation signal in an attempt
to prevent the sigchld thread from making it into
handler_chld before being canceled.
added primary_term_dims_change api callback
forgot to set input flag on g_child when input comes from API
added primary_refresh and terminal_refresh API calls
add timer for input processing callback
fixed bug in term_win.c

sometimes libvterm will have bogus values for the cursor
just after a resize, so we need to check to make sure it is
within the bounds of the current window size before moving it.

also fixed some debug output to consistently print dimensions
with rows first and columns second.
added TODO item