Add fsync for windows, i.e. _commit. See dce8876
stmhal: Add file.flush and os.stat.
py: Add stream reading of n unicode chars; unicode support by default.

With unicode enabled, this patch allows reading a fixed number of
characters from text-mode streams; eg file.read(5) will read 5 unicode
chars, which can made of more than 5 bytes.

For an ASCII stream (ie no chars > 127) it only needs to do 1 read.  If
there are lots of non-ASCII chars in a stream, then it needs multiple
reads of the underlying object.

Adds a new test for this case.  Enables unicode support by default on
unix and stmhal ports.
Merge pull request #759 from micropython/unicode-read-chars

py: Add stream reading of n unicode chars; unicode support by default.
Merge pull request #757 from stinos/windows-fsync

Add fsync for windows, i.e. _commit. See dce8876
py: Make print() accept "file" argument, and actually print to stream.

And not system printf(), like it was before. For this, move pfenv_printf()
from stmhal port to py/.
stmhal: Change calls to pfenv_printf to pfenv_vprintf.

Fixes printing bugs introduced by
cb66f41ebc4980f4e6b7543bece19e3b9daac25c.
stmhal: Fix REPL printing by cooking output sent to stdout_obj.

Recent changes to builtin print meant that print was printing to the
mp_sys_stdout_obj, which was sending data raw to the USB CDC device.
The data should be cooked so that \n turns into \r\n.
Merge https://github.com/micropython/micropython