py/modio: Allow uio.IOBase streams to return errno for read/write error.
py/modio: Allow uio.IOBase streams to return errno for read/write error.

This allows user code that inherits from uio.IOBase to return an errno
error code from the user readinto/write function, by returning a negative
value.  Eg returning -123 means an errno of 123.  This is already how the
custom ioctl works.

henriknelson/micropython,MrSurly/micropython,henriknelson/micropython,tobbad/micropython,selste/micropython,tobbad/micropython,adafruit/circuitpython,selste/micropython,adafruit/circuitpython,bvernoux/micropython,adafruit/circuitpython,selste/micropython,adafruit/circuitpython,kerneltask/micropython,bvernoux/micropython,henriknelson/micropython,MrSurly/micropython,kerneltask/micropython,selste/micropython,tobbad/micropython,bvernoux/micropython,pramasoul/micropython,pramasoul/micropython,kerneltask/micropython,pramasoul/micropython,henriknelson/micropython,adafruit/circuitpython,pramasoul/micropython,kerneltask/micropython,MrSurly/micropython,pramasoul/micropython,MrSurly/micropython,bvernoux/micropython,henriknelson/micropython,adafruit/circuitpython,selste/micropython,kerneltask/micropython,bvernoux/micropython,tobbad/micropython,tobbad/micropython,MrSurly/micropython