py: Add TimeoutError exception subclassed from OSError.

The TimeoutError is useful for some modules, specially the the
socket module. TimeoutError can then be alised to socket.timeout
and then Python code can differentiate between socket.error and
socket.timeout.
diff --git a/py/objexcept.c b/py/objexcept.c
index 6c108d9..75369ba 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -221,8 +221,11 @@
     MP_DEFINE_EXCEPTION(UnboundLocalError, NameError)
     */
   MP_DEFINE_EXCEPTION(OSError, Exception)
-    /*
+#if MICROPY_PY_BUILTINS_TIMEOUTERROR
     MP_DEFINE_EXCEPTION_BASE(OSError)
+    MP_DEFINE_EXCEPTION(TimeoutError, OSError)
+#endif
+    /*
     MP_DEFINE_EXCEPTION(BlockingIOError, OSError)
     MP_DEFINE_EXCEPTION(ChildProcessError, OSError)
     MP_DEFINE_EXCEPTION(ConnectionError, OSError)
@@ -235,7 +238,6 @@
     MP_DEFINE_EXCEPTION(NotADirectoryError, OSError)
     MP_DEFINE_EXCEPTION(PermissionError, OSError)
     MP_DEFINE_EXCEPTION(ProcessLookupError, OSError)
-    MP_DEFINE_EXCEPTION(TimeoutError, OSError)
     MP_DEFINE_EXCEPTION(FileExistsError, OSError)
     MP_DEFINE_EXCEPTION(FileNotFoundError, OSError)
     MP_DEFINE_EXCEPTION(ReferenceError, Exception)