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.

The claim we only ever use 1 is false.  A situation where we don't start at 1 already exists, which is the very reason I had to add this feature.

During interactive terminal commands, the commands get compiled one at a time and appended to the program context of the interactive terminal.  But I wanted to be able to refer back to the previous lines when something like a LOCK or a WHEN gets typed in interactively but not really executed until later.  I need the line number information from the interactive commands so I can report that the divide by zero you just got was because of the LOCK statement you typed in 3 lines ago, but just triggered now when you used the lock statement's variable in another statement.

To make this work, the first command a user types calls this with line number = 1, the second one calls it with line number = 2, and so on, and I use that to look into the command history (the thing that stores a buffer for the up-arrow key to use) to find the right statement.