Non-blocking standard output

This pr consists of two changes:

1) Both the fd_driver (i.e. oldshell) and the ttysl_driver (for unix) are changed to use non-blocking I/O where possible, and when not possible a separate thread is used in order to not block the scheduler threads. 

2) A synchronous protocol has been added for outputting large chunks of text. This ensures that all stdout data is delivered to the ttysl driver before the emulator terminates. This is a backwards incompatible change of the internal protocol used in between group and user, which should be ok as I doubt anyone outside the Erlang/OTP code base have written their own shell.

The two changes are submitted together as having non-blocking I/O exposes the flaw in the stdout protocol and tests start to fail.
minor consistency typo: buff -> buf