py: Add mp_obj_is_integer; make mp_get_index check for long int.

mp_obj_is_integer should be used to check if an object is of integral
type.  It returns true for bool, small int and long int.
diff --git a/py/obj.c b/py/obj.c
index d1db536..844ec41 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -99,6 +99,11 @@
     }
 }
 
+// returns true if o_in is bool, small int, or long int
+bool mp_obj_is_integer(mp_obj_t o_in) {
+    return MP_OBJ_IS_INT(o_in) || MP_OBJ_IS_TYPE(o_in, &mp_type_bool);
+}
+
 bool mp_obj_is_callable(mp_obj_t o_in) {
     return mp_obj_get_type(o_in)->call != NULL;
 }
@@ -285,8 +290,8 @@
 // is_slice determines whether the index is a slice index
 uint mp_get_index(const mp_obj_type_t *type, machine_uint_t len, mp_obj_t index, bool is_slice) {
     int i;
-    if (MP_OBJ_IS_SMALL_INT(index)) {
-        i = MP_OBJ_SMALL_INT_VALUE(index);
+    if (MP_OBJ_IS_INT(index)) {
+        i = mp_obj_int_get_checked(index);
     } else if (MP_OBJ_IS_TYPE(index, &mp_type_bool)) {
         i = (index == mp_const_true ? 1 : 0);
     } else {