esp8266: Change bignum from mpz to longlong; move some rodata to iram.

Some rodata items can go in iram/irom segment, but not others.  With
this patch ESP now has 24256 bytes of heap ram.  It passes 228 out of
248 tests from tests/basics directory.
diff --git a/esp8266/esp8266.ld b/esp8266/esp8266.ld
index 34171c3..b845fad 100644
--- a/esp8266/esp8266.ld
+++ b/esp8266/esp8266.ld
@@ -52,7 +52,7 @@
         *(.dport.rodata)
         _dport0_rodata_end = ABSOLUTE(.);
     } >dport0_0_seg :dport0_0_phdr
-  
+
     .dport0.literal : ALIGN(4)
     {
         _dport0_literal_start = ABSOLUTE(.);
@@ -60,7 +60,7 @@
         *(.dport.literal)
         _dport0_literal_end = ABSOLUTE(.);
     } >dport0_0_seg :dport0_0_phdr
-  
+
     .dport0.data : ALIGN(4)
     {
         _dport0_data_start = ABSOLUTE(.);
@@ -68,7 +68,48 @@
         *(.dport.data)
         _dport0_data_end = ABSOLUTE(.);
     } >dport0_0_seg :dport0_0_phdr
-  
+
+    .irom0.text : ALIGN(4)
+    {
+        _irom0_text_start = ABSOLUTE(.);
+        *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
+        *py*.o*(.literal* .text*)
+        *gccollect.o*(.literal* .text*)
+        *gchelper.o*(.literal* .text*)
+        _irom0_text_end = ABSOLUTE(.);
+    } >irom0_0_seg :irom0_0_phdr
+
+    .text : ALIGN(4)
+    {
+        _stext = .;
+        _text_start = ABSOLUTE(.);
+        *(.entry.text)
+        *(.init.literal)
+        *(.init)
+        *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
+        *(.fini.literal)
+        *(.fini)
+        *(.gnu.version)
+        *qstr.o(.rodata.const_pool)
+        *.o(.rodata.mp_type_*)
+        /*
+        can't put these here for some reason...
+        *builtin.o(.rodata.mp_builtin_*_obj)
+        *parse.o(.rodata.rule_*)
+        */
+        _text_end = ABSOLUTE(.);
+        _etext = .;
+    } >iram1_0_seg :iram1_0_phdr
+
+    .lit4 : ALIGN(4)
+    {
+        _lit4_start = ABSOLUTE(.);
+        *(*.lit4)
+        *(.lit4.*)
+        *(.gnu.linkonce.lit4.*)
+        _lit4_end = ABSOLUTE(.);
+    } >iram1_0_seg :iram1_0_phdr
+
     .data : ALIGN(4)
     {
         _data_start = ABSOLUTE(.);
@@ -85,7 +126,7 @@
         *(.jcr)
         _data_end = ABSOLUTE(.);
     } >dram0_0_seg :dram0_0_phdr
-  
+
     .rodata : ALIGN(4)
     {
         _rodata_start = ABSOLUTE(.);
@@ -123,7 +164,7 @@
         _bss_table_end = ABSOLUTE(.);
         _rodata_end = ABSOLUTE(.);
     } >dram0_0_seg :dram0_0_phdr
-  
+
     .bss ALIGN(8) (NOLOAD) : ALIGN(4)
     {
         . = ALIGN (8);
@@ -145,38 +186,6 @@
         _bss_end = ABSOLUTE(.);
         _heap_start = ABSOLUTE(.);
     } >dram0_0_seg :dram0_0_bss_phdr
-  
-    .irom0.text : ALIGN(4)
-    {
-        _irom0_text_start = ABSOLUTE(.);
-        *(.irom0.literal .irom.literal .irom.text.literal .irom0.text .irom.text)
-        *py*.o*(.literal* .text*)
-        _irom0_text_end = ABSOLUTE(.);
-    } >irom0_0_seg :irom0_0_phdr
-  
-    .text : ALIGN(4)
-    {
-        _stext = .;
-        _text_start = ABSOLUTE(.);
-        *(.entry.text)
-        *(.init.literal)
-        *(.init)
-        *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
-        *(.fini.literal)
-        *(.fini)
-        *(.gnu.version)
-        _text_end = ABSOLUTE(.);
-        _etext = .;
-    } >iram1_0_seg :iram1_0_phdr
-  
-    .lit4 : ALIGN(4)
-    {
-        _lit4_start = ABSOLUTE(.);
-        *(*.lit4)
-        *(.lit4.*)
-        *(.gnu.linkonce.lit4.*)
-        _lit4_end = ABSOLUTE(.);
-    } >iram1_0_seg :iram1_0_phdr
 }
 
 /* get ROM code address */