Updated APIs / Removed run in background field

Threads are no longer set to run in the background; Windows can have
their visibility set so that they do not display their activity through
the term.native API, but still write to their buffer. This allows for
running in the background without a specific property in the
ThreadEventManager API.

Threads were updated to work with Windows properly (set the visibility
of their buffer before resuming themselves to initialize).

The PrograManager was rewritten and brought some fixes along with the
re-write regarding the environments that the threads would run in not
having access to the ProgramManager API.

The Window class was added which simply provides a graphical layer
between the user and the threads wrapped up by each Window object.