Use lexer to parse hawk headers for 20x performance improvement

This is a lexing version of the header parsing performance changes suggested by dmiles here: https://github.com/tent/hawk-go/pull/5

It's a fair amount of code but provides a significant performance improvement.

Here are the benchmark results for parsing the header with the lexer rather than regexp:
BenchmarkRegexParser	   50000	     67204 ns/op
BenchmarkLexingParser	  500000	      3335 ns/op
I prefer:

```go
if mac == "" {
```