Support reference uri & fix gobs of C code

I know where you're coming from (my inner PL researcher annoyed at this too) but I think for this style of C program, using gotos in a limited pattern is sensible where there isn't any sort of RAII or other way to create a scope-bound cleanup. We could do something similar with bunches of success arguments, etc, but that's often more error prone. I know this flies in the face of a lot of common wisdom...but I'm uncertain what benefit we gain in readability + maintenance by choosing a different pattern.

This is in contrast to the "goto" of the 60s when Goto Considered Harmful was written where the jumps were often based on line number and could across procedure boundaries totally screwing up your stack etc etc. Compared to that, the C/C++ goto is a gentler beast....perhaps like a Koala...mostly sleepy (though nasty when woken up). ;)