add the gcc side of symbol conversion

This adds the basics of the gcc side of symbol conversion.
It compiles but is completely untested.

While writing this I realized that I don't have a good plan for label
conversion.  For example "goto" seems hard to translate properly.
It may be best simply not to translate labels.