introduce a new parser

This parser is part of the sarge[1] package. It's capable of understanding
things like pipelines, redirections, lists (;, &, &&, ||) and compound
commands. Supporting command substitutions will be added later on.

The parser is based on a partial rewrite of shlex, and a fairly simplistic
recursive parser.

1: https://bitbucket.org/vinay.sajip/sarge
parser: remove the parts we don't need
parser: don't validate redirections, simply remember all of them
parser: fix ValueError raise
parser: add a pretty printer
parser: print list nodes on a new line
parser: change parse method names to better match terms used in 'man bash'
parser: make sure each Node has a "kind"
parser: implement __eq__ for Node
parser: add a bunch of tests
parser: extract __init__ from parse method
parser: add support for returning the start and end positions of the lexer
parser: use a namedtuple for the token info
parser: add a nodevisitor class
parser: add an option to convert each node position to substrings of source
parser: annotate each node with the start and end positions of it in the source
test-parser: add a test for redirection
parser: add node kinds for words and redirections
parser: add helper to find the first node of a specific kind