Parser

## Overview

This pull request adds an InfluxQL parser. The `Parser` provides several methods to parse different types of query nodes:

```
func (p *Parser) ParseQuery() (Query, error)
func (p *Parser) ParseStatement() (Statement, error)
func (p *Parser) ParseExpr() (Expr, error)
```

Statements are parsed into different types according to the initial tokens in the statement.

### TODO

- [x] `Parser.ParseStatement()`
- [x] `Parser.ParseExpr()`
- [x] `Parser.ParseQuery()`
- [ ] `MERGE` & `INNER JOIN`
- [x] `DELETE FROM`
- [x] `LIST SERIES`
- [x] `DROP SERIES`
- [x] `LIST CONTINUOUS QUERIES`
- [x] `DROP CONTINUOUS QUERY`
- [ ] `SELECT ... INTO ...`
- [ ] Support parentheses in expression parsing.
- [ ] Switch `!=` to `<>`
- [ ] Support matching operators (`=~`, `!~`)
- [ ] Support function calls

We do support lower case but there are tests for case insensitivity in `scanner_test.go` so it seemed redundant to put it here.