Support reference uri & fix gobs of C code

This took me a while to figure out as well.  -1 and -2 are special (and apparently idiomatic to this API...you'd think they'd have created constants) to specify an argument list style API.

-1 means the method gets an int argc and VALUE* argv similar to main. -2 just gives an VALUE args where you know the ruby type of args is an array.

I didn't want to break the defacto API if I upstreadm so I made this a vararg function instead of just increasing the parameter count. I think you comment later that you think I should use a hash. Totally agree.  Will try to do that in a follow up CL.