Add more edge cases to scanner

Unfortunately we seem to have 3 cases for handling newlines, depending on if we're in the start state, comment state, or string literal state (we must be in one of those three states, since a newline bumps us out of number/id/keyword/symbol states). I was hoping to generalize, but can't figure out quite how to do so at the moment. DFA code is already hideously redundant, so YOLO I guess.