Moved dwarf debug info to memory, then file

Also changed DW_AT_{high,low}_pc to decimal, for more obvious TODOness
Rename val_sz to val_type
DWARF sibling push/pop hooks
Zero dwarf_val structs on creation
DWARF sibling location tracking+output
DW_AT_external output for extern/static variables
DW_FORM_block1 may take addresses - used for DW_AT_location

This means global variables now have location info in the binary,
and can be correctly printed by debuggers
Use the smallest type for DW_FORM_block values
Don't emit location or extern info for typedefs