Proper support for registering builtin modules in ROM.

Comes with some refactoring of code and renaming of files.  All modules
are now named mod*.[ch].
diff --git a/py/objarray.c b/py/objarray.c
index ee43bde..69f60e0 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -121,7 +121,7 @@
 }
 
 STATIC mp_obj_t array_append(mp_obj_t self_in, mp_obj_t arg) {
-    assert(MP_OBJ_IS_TYPE(self_in, &array_type));
+    assert(MP_OBJ_IS_TYPE(self_in, &mp_type_array));
     mp_obj_array_t *self = self_in;
     if (self->free == 0) {
         int item_sz = mp_binary_get_size(self->typecode);
@@ -154,7 +154,7 @@
     { NULL, NULL },
 };
 
-const mp_obj_type_t array_type = {
+const mp_obj_type_t mp_type_array = {
     { &mp_type_type },
     .name = MP_QSTR_array,
     .print = array_print,
@@ -169,7 +169,7 @@
 
 STATIC mp_obj_array_t *array_new(char typecode, uint n) {
     mp_obj_array_t *o = m_new_obj(mp_obj_array_t);
-    o->base.type = &array_type;
+    o->base.type = &mp_type_array;
     o->typecode = typecode;
     o->free = 0;
     o->len = n;
@@ -190,7 +190,7 @@
 // Create bytearray which references specified memory area
 mp_obj_t mp_obj_new_bytearray_by_ref(uint n, void *items) {
     mp_obj_array_t *o = m_new_obj(mp_obj_array_t);
-    o->base.type = &array_type;
+    o->base.type = &mp_type_array;
     o->typecode = BYTEARRAY_TYPECODE;
     o->free = 0;
     o->len = n;
@@ -207,7 +207,7 @@
     machine_uint_t cur;
 } mp_obj_array_it_t;
 
-mp_obj_t array_it_iternext(mp_obj_t self_in) {
+STATIC mp_obj_t array_it_iternext(mp_obj_t self_in) {
     mp_obj_array_it_t *self = self_in;
     if (self->cur < self->array->len) {
         return mp_binary_get_val(self->array->typecode, self->array->items, self->cur++);
@@ -222,7 +222,7 @@
     .iternext = array_it_iternext,
 };
 
-mp_obj_t array_iterator_new(mp_obj_t array_in) {
+STATIC mp_obj_t array_iterator_new(mp_obj_t array_in) {
     mp_obj_array_t *array = array_in;
     mp_obj_array_it_t *o = m_new_obj(mp_obj_array_it_t);
     o->base.type = &array_it_type;