Refactor for less GC churning
Refactor for less GC churning

; Lexer.mark
; Lexer.minCol
: They're now public instance variables (integers), and they
  will be used to assist Lexer.fn.sliceText() and replace
  Lexer.fn.slice()

; Lexer.fn.pop()
; Lexer.fn.popUntil()
: Removed. Use Lexer.fn.prev() and Lexer.fn.prevUntil() instead.

; Lexer.fn.peekUntil()
; Lexer.fn.nextUntil()
; Lexer.fn.prevUntil()
: In addition to the current conditions, break the loops if the
  current position is the same as the marked position.

; __updateLines()
: Renamed to __updateCols(), since tokens' line information is
  never used by the program.

; Lexer.fn.slice()
          .each()
          .first()
          .last()
: Removed. With Lexer.fn.popUntil() gone, there's no more need
  for first() and last().

  For slice(), set Lexer.mark instead.

  For each(), there are better ways to write a backslash escaping
  plugin when it comes to serializing the tree back to BBM.

Preole/bbm,Preole/bbm