stmhal/uart: If char is not received within timeout, return EAGAIN error.
Instead of return 0, which means EOF. There's no good way to detect EOF on continuously active bus like UART, and treat timeout as just temporary unvailability of data. .read() method of UART object will return None in this case (instead of 0, which again measn EOF). This is fully compliant with unix port.