Started working on program windows. (WIP)

Programs are started in a separate thread.
TODO: Draw in the window.
TODO: Filter mouse events (on contain) and key/char events (on focus).
Fixed Scheduler:terminate.

Do not resume when dead.
Error data must be passed as table.
Fixed table lookups (state should be self)
More fiddling with program windows. (WIP)

Not sure how to properly redirect the terminal for *all* global
functions/APIs (print,read,write,textutils,...)
Even more fiddling... (WIP)
Use term.redirect for ProgramWindow.

Wrap the program inside another coroutine which redirects/restores the
terminal with each resume.
Terminal fixes.
Moved terminal methods to ElementTerminal.

Was conflicting with Element:clear.
Implemented program event filtering.

Fixed terminal cursor going out of bounds.
Updated windows demo.