Add "drain" callback and allow to write before started
Add run()
Add support for closing STDIN