Debugger: Fix tokenizer bug.

- When detecting a possible start of string literal, ensure that a
  terminator was actually found, otherwise simply consider it as a
  single character token. Otherwise, cases such as an apostrophe in
  a C-style comment that spanned a single line would result in us
  missing the token for the comment close, and highlighting all
  subsequent lines until such a token was encountered as comments.
Debugger: ThreadHandler cleanup.

- When evaluating a breakpoint condition, there's no need to change
  the thread state unless the condition is actually met. This would
  lead to lots of unnecessary state switching and associated overhead
  in the GUI.
Debugger: Expression evaluator optimization.

- When resolving an identifier, first attempt to match it against
  frame variable if applicable, and only attempt to look it up as a
  type name if the former comes up empty. The type lookup is
  significantly more expensive since if it doesn't match an already
  known type, it currently needs to search through all DIEs trying
  to find a candidate. This would significantly slow down expression
  evaluation involving identifier names, and was particularly noticeable
  for breakpoint condition processing.