stream: Implement seek operation support via ioctl, wrapped in generic method.

Also, implement for unix port.
diff --git a/py/obj.h b/py/obj.h
index ab51234..09f277a 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -231,8 +231,6 @@
 
 // Stream protocol
 #define MP_STREAM_ERROR (-1)
-#define MP_STREAM_FLUSH (1)
-#define MP_STREAM_POLL  (2)
 typedef struct _mp_stream_p_t {
     // On error, functions should return MP_STREAM_ERROR and fill in *errcode (values
     // are implementation-dependent, but will be exposed to user, e.g. via exception).
@@ -242,6 +240,17 @@
     mp_uint_t is_text : 1; // default is bytes, set this for text stream
 } mp_stream_p_t;
 
+// Stream ioctl request codes
+#define MP_STREAM_FLUSH (1)
+#define MP_STREAM_SEEK  (2)
+#define MP_STREAM_POLL  (3)
+
+// Argument structure for MP_STREAM_SEEK
+struct mp_stream_seek_t {
+    mp_off_t offset;
+    int whence;
+};
+
 struct _mp_obj_type_t {
     mp_obj_base_t base;
     qstr name;