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.

each type gets its own file. I know we have a few monster files with tons of classes (im looking at you opcode :P) im just trying not to create any new ones.