Shell working with terminal in non-canonical mode

This makes much more sense. The terminal should be doing very little and any user programs should interact with the shell and not the terminal itself.