lib/utils: Add pyexec_frozen_module to load and execute frozen module.

This is a convenience function similar to pyexec_file.  It should be used
instead of raw mp_parse_compile_execute because the latter does not catch
and report exceptions.
diff --git a/esp8266/main.c b/esp8266/main.c
index 178ad8b..051ff6f 100644
--- a/esp8266/main.c
+++ b/esp8266/main.c
@@ -32,7 +32,6 @@
 #include "py/runtime0.h"
 #include "py/runtime.h"
 #include "py/stackctrl.h"
-#include "py/frozenmod.h"
 #include "py/mphal.h"
 #include "py/gc.h"
 #include "lib/utils/pyexec.h"
@@ -49,8 +48,7 @@
     mp_obj_list_init(mp_sys_path, 0);
     mp_obj_list_init(mp_sys_argv, 0);
 #if MICROPY_MODULE_FROZEN
-    mp_lexer_t *lex = mp_find_frozen_module("main", 4);
-    mp_parse_compile_execute(lex, MP_PARSE_FILE_INPUT, mp_globals_get(), mp_locals_get());
+    pyexec_frozen_module("main");
 #endif
 }