Before this commit, the binding stack was cleared before evaluating the user-given value for the `exit` command. If a syntax error happened when `eval`ing it, the program would still be running with no elements in the binding stack, causing next calls of `exit` to fail.
This is acheived by keeping track of which Strings are open and re-opening them before giving CodeRay the new line of input. I considered instead passing the entire input through CodeRay and then just extracting the last line of tokens, unfortunately this would exhibit O(n²) behaviour when pasting code into the terminal; and it's not obvious whether the tokenization would be stable enough to guarantee an easy way to get the last line of tokens.
This increases the speed for name_search considerably (~50%), and makes the code a bit more readable. It also Fixes # 527, by deduping methods by the pair of [owner, name] not just name. TODO: Test