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
Enhance tools/ 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/ b/vgasrc/
index b5f0319..08a5f32 100644
--- a/vgasrc/
+++ b/vgasrc/
@@ -10,7 +10,7 @@
         .text 0 : {
-                *(.rom.header)
+                KEEP(*(.rom.header))
                 _rodata = . ;