py/stream: seek: Consistently handle negative offset for SEEK_SET.

Per POSIX, this is EINVAL, so raises OSError(EINVAL).
diff --git a/py/stream.c b/py/stream.c
index 5d18681..0029a59 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -448,11 +448,16 @@
     struct mp_stream_seek_t seek_s;
     // TODO: Could be uint64
     seek_s.offset = mp_obj_get_int(args[1]);
-    seek_s.whence = 0;
+    seek_s.whence = SEEK_SET;
     if (n_args == 3) {
         seek_s.whence = mp_obj_get_int(args[2]);
     }
 
+    // In POSIX, it's error to seek before end of stream, we enforce it here.
+    if (seek_s.whence == SEEK_SET && seek_s.offset < 0) {
+        mp_raise_OSError(MP_EINVAL);
+    }
+
     int error;
     mp_uint_t res = stream_p->ioctl(args[0], MP_STREAM_SEEK, (mp_uint_t)(uintptr_t)&seek_s, &error);
     if (res == MP_STREAM_ERROR) {