Removed buffered channels, syncronization is important here.

ON both output and input streams. Also fixed all the tests and simplified them using helper funcs.
Changed procedures that handle process interruption.

* forced wait on known "now process is going to be ended" moments
* forced KILL if process did not finish on SIGINT for a second
* moved channels and streams close() to appropriate places
* made sure test still works.