esp8266: Add custom _assert() function.

Enabling standard assert() (by removing -DNDEBUG) produces non-bootable
binary (because all messages go to .rodata which silently overflows).
So, for once-off debugging, have a custom _assert().
diff --git a/esp8266/esp_mphal.c b/esp8266/esp_mphal.c
index 1a46c5f..cc0eb3e 100644
--- a/esp8266/esp_mphal.c
+++ b/esp8266/esp_mphal.c
@@ -30,6 +30,8 @@
 #include "uart.h"
 #include "esp_mphal.h"
 #include "user_interface.h"
+#include "py/obj.h"
+#include "py/mpstate.h"
 
 extern void ets_wdt_disable(void);
 extern void wdt_feed(void);
@@ -98,3 +100,9 @@
 void mp_hal_set_interrupt_char(int c) {
     // TODO
 }
+
+void __assert_func(const char *file, int line, const char *func, const char *expr) {
+    printf("assert:%s:%d:%s: %s\n", file, line, func, expr);
+    nlr_raise(mp_obj_new_exception_msg(&mp_type_AssertionError,
+        "C-level assert"));
+}