Initial lexer for batch scripts

* Moving to a split lexer/parser model
* Some logic stolen from current parser, future work needed to switch
  parser to rely on this new lexer
* Only supports echos and piping, but is more precise than current parser