Adds a Tracer interface that is capable of logging all executed
tea.Cmd and all processed tea.Msg.
RemoteTracer is one standard implementation, which provides access
to a live stream of these event logs, through a TCP socket.
WithContext lets you specify a context in which to run the Program.
This is useful if you want to cancel the execution from outside.
When a Program gets cancelled it will exit with an error
ErrProgramKilled.
This commit also contains some refactors:
* Refactor away inputStatus type
* Refactor away program.inputIsTTY member
* Simplify how we setup and restore input when it's a TTY