Lexer constructor and slice side effects.

- Prevent Lexer.prototype.slice from modifying the
  wrapped token array when called with minCol > 0.

  Lexer.prototype.slice now returns a sliced (shallow)
  copy of the original array within an index range.

- Do not process the token array if it has already been
  processed.

- New parameter in constructor: `minCol`. This parameter
  will be used to trim excess line-leading white space on
  Lexer.prototype.sliceText().

- Refactored popUntil() into a public method of Lexer;
  More code reusability.

- Added, .pop(), .first(), .last().