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.

As far as I can tell, it doesn't even need to exist anymore.  If you read my commit notes on this section, I realized after committing that this wasn't being used anymore.  It can be deleted entirely.  It's from an older design when I thought it would be possible to store opcode addresses for the line as a range of numbers, forgetting that order of operations with reverse polish notation means the opcodes for a source code line don't always come out contiguously like that, so I abandoned this design idea.