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.

You will have to forgive a difference in familiarity, IP has a very different meaning to me as i was in the networking field for quite some time. Luckily you included a nice comment that told me what IP meant and maybe i overreacted. 

For the record i actually dont like the CPU class. Not because i want it spelled out, but because i feel that having the entire "CPU" as one class is violating Single Responsibility.