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.

Then you should be complaining that the CPU class should be CentralProcessingUnit.  Why are you not complaining?  Because CPU is such a common acronym that it's become a word unto itself, like NASA.   To my eyes, IP is like that.  IP meaning Instruction Pointer - the address where a machine language program is currently executing from - is quite common among people who talk at the machine level.