py: Use mp_not_implemented consistently for not implemented features.
diff --git a/py/argcheck.c b/py/argcheck.c
index 1be576d..e774406 100644
--- a/py/argcheck.c
+++ b/py/argcheck.c
@@ -146,7 +146,6 @@
 
 #if MICROPY_CPYTHON_COMPAT
 NORETURN void mp_arg_error_unimpl_kw(void) {
-    nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError,
-        "keyword argument(s) not yet implemented - use normal args instead"));
+    mp_not_implemented("keyword argument(s) not yet implemented - use normal args instead");
 }
 #endif
diff --git a/py/objarray.c b/py/objarray.c
index b14ad5a..f5ea794 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -365,8 +365,7 @@
         } else if (MP_OBJ_IS_TYPE(index_in, &mp_type_slice)) {
             mp_bound_slice_t slice;
             if (!mp_seq_get_fast_slice_indexes(o->len, index_in, &slice)) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError,
-                    "only slices with step=1 (aka None) are supported"));
+                mp_not_implemented("only slices with step=1 (aka None) are supported");
             }
             if (value != MP_OBJ_SENTINEL) {
                 #if MICROPY_PY_ARRAY_SLICE_ASSIGN
diff --git a/py/objstr.c b/py/objstr.c
index 4a0705a..274e76d 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -391,8 +391,7 @@
         if (MP_OBJ_IS_TYPE(index, &mp_type_slice)) {
             mp_bound_slice_t slice;
             if (!mp_seq_get_fast_slice_indexes(self_len, index, &slice)) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError,
-                    "only slices with step=1 (aka None) are supported"));
+                mp_not_implemented("only slices with step=1 (aka None) are supported");
             }
             return mp_obj_new_str_of_type(type, self_data + slice.start, slice.stop - slice.start);
         }
@@ -975,7 +974,7 @@
                 arg = key_elem->value;
             }
             if (*lookup) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError, "attributes not supported yet"));
+                mp_not_implemented("attributes not supported yet");
             }
             vstr_free(field_name);
             field_name = NULL;
diff --git a/py/objstrunicode.c b/py/objstrunicode.c
index 0bb6e04..1744925 100644
--- a/py/objstrunicode.c
+++ b/py/objstrunicode.c
@@ -178,8 +178,7 @@
             mp_obj_t ostart, ostop, ostep;
             mp_obj_slice_get(index, &ostart, &ostop, &ostep);
             if (ostep != mp_const_none && ostep != MP_OBJ_NEW_SMALL_INT(1)) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError,
-                    "only slices with step=1 (aka None) are supported"));
+                mp_not_implemented("only slices with step=1 (aka None) are supported");
             }
 
             const byte *pstart, *pstop;
diff --git a/py/objtuple.c b/py/objtuple.c
index 2fd1815..9aac1ce 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -183,8 +183,7 @@
         if (MP_OBJ_IS_TYPE(index, &mp_type_slice)) {
             mp_bound_slice_t slice;
             if (!mp_seq_get_fast_slice_indexes(self->len, index, &slice)) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_NotImplementedError,
-                    "only slices with step=1 (aka None) are supported"));
+                mp_not_implemented("only slices with step=1 (aka None) are supported");
             }
             mp_obj_tuple_t *res = mp_obj_new_tuple(slice.stop - slice.start, NULL);
             mp_seq_copy(res->items, self->items + slice.start, res->len, mp_obj_t);