Do garbage collection of unused sections.

Implement -ffunction-sections and -fdata-sections in both 32bit and
    16bit code.
Make sure all sections have unique names (even asm and discarded
    sections).
Enhance tools/layoutrom.py script to find all sections reachable from
    exported 16bit code - prune all other sections.
Mark sections with "export" if they can be visible outside of code -
    these sections wont be dropped when pruning unused sections.
diff --git a/vgasrc/vgalayout.lds.S b/vgasrc/vgalayout.lds.S
index b5f0319..08a5f32 100644
--- a/vgasrc/vgalayout.lds.S
+++ b/vgasrc/vgalayout.lds.S
@@ -10,7 +10,7 @@
 SECTIONS
 {
         .text 0 : {
-                *(.rom.header)
+                KEEP(*(.rom.header))
                 *(.text.*)
                 _rodata = . ;
                 *(.rodata.__func__.*)