py: Simplify fastn in VM; reduce size of unique code struct.

We still have FAST_[0,1,2] byte codes, but they now just access the
fastn array (before they had special local variables).  It's now
simpler, a bit faster, and uses a bit less stack space (on STM at least,
which is most important).

The only reason now to keep FAST_[0,1,2] byte codes is for compressed
byte code size.
diff --git a/py/objgenerator.c b/py/objgenerator.c
index 91bbbce..67f8eed 100644
--- a/py/objgenerator.c
+++ b/py/objgenerator.c
@@ -16,7 +16,6 @@
 
 typedef struct _mp_obj_gen_wrap_t {
     mp_obj_base_t base;
-    uint n_state;
     mp_obj_t *fun;
 } mp_obj_gen_wrap_t;
 
@@ -35,7 +34,7 @@
         nlr_jump(mp_obj_new_exception_msg(MP_QSTR_TypeError, "function does not take keyword arguments"));
     }
 
-    return mp_obj_new_gen_instance(bc_code, self->n_state, n_args, args);
+    return mp_obj_new_gen_instance(bc_code, bc_n_state, n_args, args);
 }
 
 const mp_obj_type_t gen_wrap_type = {
@@ -44,11 +43,9 @@
     .call = gen_wrap_call,
 };
 
-mp_obj_t mp_obj_new_gen_wrap(uint n_locals, uint n_stack, mp_obj_t fun) {
+mp_obj_t mp_obj_new_gen_wrap(mp_obj_t fun) {
     mp_obj_gen_wrap_t *o = m_new_obj(mp_obj_gen_wrap_t);
     o->base.type = &gen_wrap_type;
-    // we have at least 3 locals so the bc can write back fast[0,1,2] safely; should improve how this is done
-    o->n_state = (n_locals < 3 ? 3 : n_locals) + n_stack;
     o->fun = fun;
     return o;
 }