py: Add MP_OBJ_STOP_ITERATION and make good use of it.

Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL.
This helps a lot in debugging and understanding of function API.
diff --git a/py/obj.c b/py/obj.c
index 3ace631..514a694 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -90,7 +90,7 @@
         mp_obj_type_t *type = mp_obj_get_type(arg);
         if (type->unary_op != NULL) {
             mp_obj_t result = type->unary_op(MP_UNARY_OP_BOOL, arg);
-            if (result != MP_OBJ_NULL) {
+            if (result != MP_OBJ_NOT_SUPPORTED) {
                 return result == mp_const_true;
             }
         }
@@ -180,7 +180,7 @@
     mp_obj_type_t *type = mp_obj_get_type(o1);
     if (type->binary_op != NULL) {
         mp_obj_t r = type->binary_op(MP_BINARY_OP_EQUAL, o1, o2);
-        if (r != MP_OBJ_NULL) {
+        if (r != MP_OBJ_NOT_SUPPORTED) {
             return r == mp_const_true ? true : false;
         }
     }