py: Make globals and locals proper dictionary objects.

Finishes addressing issue #424.

In the end this was a very neat refactor that now makes things a lot
more consistent across the py code base.  It allowed some
simplifications in certain places, now that everything is a dict object.

Also converted builtins tables to dictionaries.  This will be useful
when we need to turn builtins into a proper module.
diff --git a/unix/mpconfigport.h b/unix/mpconfigport.h
index b8ee020..3798f88 100644
--- a/unix/mpconfigport.h
+++ b/unix/mpconfigport.h
@@ -34,4 +34,4 @@
 struct _mp_obj_fun_native_t;
 extern const struct _mp_obj_fun_native_t mp_builtin_open_obj;
 #define MICROPY_EXTRA_BUILTINS \
-    { MP_QSTR_open, (mp_obj_t)&mp_builtin_open_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj },