Experimental changes(3)

k_getline continues reading even if it is interrupted
Set SIGTTIN handler = SIGIGN
The shell changes the foregroud process group to that of its children
The shell waits for children even if it is interrupted if job->mode == FOREGROUND
Experimental changes(4)

The first child changes foreground process group instead of the shell.
This also works.
Cleanup

Remove unused code
Wrap debug print code with "#if DEBUG" and "#endif"