Resolves #186 and #210

This is a rather large edit because it required a lot of work to track back
to the source line where an opcode came from.  See the comments for
issue #186 for the majority of the explanation.

Issue #210 was solved along with this because the stack trace work I was
doing is what discovered problem #210.

This is STILL NOT well tested yet.  I wanted to get what I had in place so that others like @erendrake could pull the code and give it a try.

Because these different variants of this method call all only differ in parameters, and if you look at what they do, they all end up calling the same method in the end anyway with just different parameters defaulted, I don't see why we can't just make them one method with some default-able arguments, and have you name which arguments you're actually setting using that "=>" syntax.