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.
I don't see anyway to treat -2 (or any number < -1) within the specs.  Here is what read must do:

- read <= size bytes
- only make 1 system call (debatable as to whether 0 system calls can be made)
- if returning 0 bytes, and size !=0, then it's EOF

So, with size=-2 we must read at most -2 bytes.  That's not logically possible (we can't unread), and we can't return 0 bytes because that would indicate EOF (which it may not be).