Lexer API Change

Refactored the Lexer API for better performance (Even less
CG churning) and more compact (hopefully still readable)
code base.



Changes Detail
--------------

; Lexer.fn.sliceText(startPos, endPos, minCol)
: Gone. Replaced by Lexer.fn.textUntil() and
  Lexer.fn.textPast()

; Lexer.fn.textUntil(callback, extras, minCol)
: Collects the lexeme of lexical token from the current
  position up to, but not including the position where
  the callback function returns truthy for.

  Exhibits the same iteration behavior as
  Lexer.fn.nextUntil(callback, extras), and the callback
  parameters are the same as well.

  Will not collect text at the position marked by the
  public variable Lexer.mark.

; Lexer.fn.textPast()
: As Lexer.fn.textUntil(), but performs an extra shift
  operation past the ending point. Exception: It cannot
  shift past the position marked by Lexer.mark.


; Lexer.fn.prev()
; Lexer.fn.prevUntil(callback, extras)
: Gone. It is replaced by an additional parameter in
  Lexer.fn.next(), while Lexer.fn.prevUntil() simply isn't
  necessary.

; Lexer.fn.next(offset)
: If an offset integer is specified, moves the current token
  marker forward or backward by that amount.

; Lexer.fn.next(offset)
; Lexer.fn.nextUntil(callback, extras)
; Lexer.fn.nextPast(callback, extras)
: They now return the instance itself instead of the position
  it has stopped in. End the chain with `.pos` to obtain the
  current index