py: Fix bug with right-shifting small ints by large amounts.

Undefined behavior in C, needs explicit check.
diff --git a/py/compile.c b/py/compile.c
index 61b8278..3633503 100644
--- a/py/compile.c
+++ b/py/compile.c
@@ -233,6 +233,11 @@
                         }
                     } else if (MP_PARSE_NODE_IS_TOKEN_KIND(pns->nodes[1], MP_TOKEN_OP_DBL_MORE)) {
                         // int >> int
+                        if (arg1 >= BITS_PER_WORD) {
+                            // Shifting to big amounts is underfined behavior
+                            // in C and is CPU-dependent; propagate sign bit.
+                            arg1 = BITS_PER_WORD - 1;
+                        }
                         pn = mp_parse_node_new_leaf(MP_PARSE_NODE_SMALL_INT, arg0 >> arg1);
                     } else {
                         // shouldn't happen