The assembler was able to assemble and then dump back to .s, but
was failing to parse certain directives necessary for valid .o
output:
- .type directives are now recognized to distinguish function symbols and others.
- .size is now parsed to provide function size.
- __stack_pointer is now special-cased with code that is shared with Codegen.
Added test that previously was failing on all 3 of the above.
Also makes a small change in StringSwitch.h for some missing
functionality (being able to detect no match).