py: Small changes to objstr.c, including a bug fix.

Some small fixed:

- Combine 'x' and 'X' cases in str format code.

- Remove trailing spaces from some lines.

- Make exception messages consistently begin with lower case (then
needed to change those in objarray and objtuple so the same
constant string data could be used).

- Fix bug with exception message having %c instead of %%c.
diff --git a/py/objarray.c b/py/objarray.c
index 44fbf2f..edf3ee8 100644
--- a/py/objarray.c
+++ b/py/objarray.c
@@ -181,7 +181,7 @@
             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"));
+                    "only slices with step=1 (aka None) are supported"));
             }
             mp_obj_array_t *res = array_new(o->typecode, slice.stop - slice.start);
             int sz = mp_binary_get_size('@', o->typecode, NULL);
diff --git a/py/objstr.c b/py/objstr.c
index d932824..4100b69 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -358,7 +358,7 @@
             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"));
+                    "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);
         }
@@ -781,7 +781,7 @@
                 vstr_add_char(vstr, '}');
                 continue;
             }
-            nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Single '}' encountered in format string"));
+            nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "single '}' encountered in format string"));
         }
         if (*str != '{') {
             vstr_add_char(vstr, *str);
@@ -827,7 +827,7 @@
             // '{:d}'.format(True) returns '1'
             // So we treat {:} as {} and this later gets treated to be {!s}
             if (*str != '}') {
-                format_spec = vstr_new(); 
+                format_spec = vstr_new();
                 while (str < top && *str != '}') {
                     vstr_add_char(format_spec, *str++);
                 }
@@ -845,7 +845,7 @@
 
         if (field_name) {
             if (arg_i > 0) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "cannot switch from automatic field numbering to manual field specification"));
+                nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "can't switch from automatic field numbering to manual field specification"));
             }
             int index = 0;
             if (str_to_int(vstr_str(field_name), &index) != vstr_len(field_name) - 1) {
@@ -860,7 +860,7 @@
             field_name = NULL;
         } else {
             if (arg_i < 0) {
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "cannot switch from manual field specification to automatic field numbering"));
+                nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "can't switch from manual field specification to automatic field numbering"));
             }
             if (arg_i >= n_args - 1) {
                 nlr_raise(mp_obj_new_exception_msg(&mp_type_IndexError, "tuple index out of range"));
@@ -878,7 +878,7 @@
             } else if (conversion == 'r') {
                 print_kind = PRINT_REPR;
             } else {
-                nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, "Unknown conversion specifier %c", conversion));
+                nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError, "unknown conversion specifier %c", conversion));
             }
             vstr_t *arg_vstr = vstr_new();
             mp_obj_print_helper((void (*)(void*, const char*, ...))vstr_printf, arg_vstr, arg, print_kind);
@@ -1005,12 +1005,9 @@
                     pfenv_print_mp_int(&pfenv_vstr, arg, 1, 8, 'a', flags, fill, width);
                     continue;
 
-                case 'x':
-                    pfenv_print_mp_int(&pfenv_vstr, arg, 1, 16, 'a', flags, fill, width);
-                    continue;
-
                 case 'X':
-                    pfenv_print_mp_int(&pfenv_vstr, arg, 1, 16, 'A', flags, fill, width);
+                case 'x':
+                    pfenv_print_mp_int(&pfenv_vstr, arg, 1, 16, type - ('X' - 'A'), flags, fill, width);
                     continue;
 
                 case 'e':
@@ -1026,7 +1023,7 @@
 
                 default:
                     nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError,
-                        "Unknown format code '%c' for object of type '%s'", type, mp_obj_get_type_str(arg)));
+                        "unknown format code '%c' for object of type '%s'", type, mp_obj_get_type_str(arg)));
             }
         }
 
@@ -1038,7 +1035,7 @@
                 // Even though the docs say that an unspecified type is the same
                 // as 'g', there is one subtle difference, when the exponent
                 // is one less than the precision.
-                //  
+                //
                 // '{:10.1}'.format(0.0) ==> '0e+00'
                 // '{:10.1g}'.format(0.0) ==> '0'
                 //
@@ -1077,7 +1074,7 @@
                 case 'F':
                 case 'g':
                 case 'G':
-                    pfenv_print_float(&pfenv_vstr, mp_obj_get_float(arg), type, flags, fill, width, precision); 
+                    pfenv_print_float(&pfenv_vstr, mp_obj_get_float(arg), type, flags, fill, width, precision);
                     break;
 
                 case '%':
@@ -1088,7 +1085,7 @@
 
                 default:
                     nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError,
-                        "Unknown format code '%c' for object of type 'float'",
+                        "unknown format code '%c' for object of type 'float'",
                         type, mp_obj_get_type_str(arg)));
             }
         } else {
@@ -1119,7 +1116,7 @@
 
                 default:
                     nlr_raise(mp_obj_new_exception_msg_varg(&mp_type_ValueError,
-                        "Unknown format code '%c' for object of type 'str'",
+                        "unknown format code '%c' for object of type 'str'",
                         type, mp_obj_get_type_str(arg)));
             }
         }
@@ -1171,12 +1168,12 @@
 
         int flags = 0;
         char fill = ' ';
-        bool alt = false;
+        int alt = 0;
         while (str < top) {
             if (*str == '-')      flags |= PF_FLAG_LEFT_ADJUST;
             else if (*str == '+') flags |= PF_FLAG_SHOW_SIGN;
             else if (*str == ' ') flags |= PF_FLAG_SPACE_SIGN;
-            else if (*str == '#') alt = true;
+            else if (*str == '#') alt = PF_FLAG_SHOW_PREFIX;
             else if (*str == '0') {
                 flags |= PF_FLAG_PAD_AFTER_SIGN;
                 fill = '0';
@@ -1184,7 +1181,7 @@
             str++;
         }
         // parse width, if it exists
-        int width = 0; 
+        int width = 0;
         if (str < top) {
             if (*str == '*') {
                 if (arg_i >= n_args) {
@@ -1234,7 +1231,7 @@
                     uint len;
                     const char *s = mp_obj_str_get_data(arg, &len);
                     if (len != 1) {
-                        nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "%c requires int or char")); 
+                        nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "%%c requires int or char"));
                         break;
                     }
                     pfenv_print_strn(&pfenv_vstr, s, 1, flags, ' ', width);
@@ -1248,12 +1245,12 @@
 #if MICROPY_PY_BUILTINS_FLOAT
                 // This is what CPython reports, so we report the same.
                 if (MP_OBJ_IS_TYPE(arg, &mp_type_float)) {
-                    nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "integer argument expected, got float")); 
+                    nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "integer argument expected, got float"));
 
                 }
 #endif
-                nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "an integer is required")); 
-                break; 
+                nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "an integer is required"));
+                break;
 
             case 'd':
             case 'i':
@@ -1276,7 +1273,7 @@
                 if (alt) {
                     flags |= (PF_FLAG_SHOW_PREFIX | PF_FLAG_SHOW_OCTAL_LETTER);
                 }
-                pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 8, 'a', flags, fill, width); 
+                pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 8, 'a', flags, fill, width);
                 break;
 
             case 'r':
@@ -1297,18 +1294,9 @@
                 break;
             }
 
-            case 'x':
-                if (alt) {
-                    flags |= PF_FLAG_SHOW_PREFIX;
-                }
-                pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 16, 'a', flags, fill, width);
-                break;
-
             case 'X':
-                if (alt) {
-                    flags |= PF_FLAG_SHOW_PREFIX;
-                }
-                pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 16, 'A', flags, fill, width);
+            case 'x':
+                pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 16, *str - ('X' - 'A'), flags | alt, fill, width);
                 break;
 
             default:
diff --git a/py/objtuple.c b/py/objtuple.c
index fc97f53..2be0440 100644
--- a/py/objtuple.c
+++ b/py/objtuple.c
@@ -166,7 +166,7 @@
             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"));
+                    "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);