py: Add MICROPY_FLOAT_CONST macro for defining float constants.

All float constants in the core should use this macro to prevent
unnecessary creation of double-precision floats, which makes code less
efficient.
diff --git a/py/modmath.c b/py/modmath.c
index 0c70f34..7c51eab 100644
--- a/py/modmath.c
+++ b/py/modmath.c
@@ -32,9 +32,8 @@
 #include <math.h>
 
 // M_PI is not part of the math.h standard and may not be defined
-#ifndef M_PI
-#define M_PI (3.14159265358979323846)
-#endif
+// And by defining our own we can ensure it uses the correct const format.
+#define MP_PI MICROPY_FLOAT_CONST(3.14159265358979323846)
 
 /// \module math - mathematical functions
 ///
@@ -204,13 +203,13 @@
 
 /// \function radians(x)
 STATIC mp_obj_t mp_math_radians(mp_obj_t x_obj) {
-    return mp_obj_new_float(mp_obj_get_float(x_obj) * M_PI / 180.0);
+    return mp_obj_new_float(mp_obj_get_float(x_obj) * (MP_PI / MICROPY_FLOAT_CONST(180.0)));
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_radians_obj, mp_math_radians);
 
 /// \function degrees(x)
 STATIC mp_obj_t mp_math_degrees(mp_obj_t x_obj) {
-    return mp_obj_new_float(mp_obj_get_float(x_obj) * 180.0 / M_PI);
+    return mp_obj_new_float(mp_obj_get_float(x_obj) * (MICROPY_FLOAT_CONST(180.0) / MP_PI));
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_math_degrees_obj, mp_math_degrees);