Also adds an EmptyWriter, used for GET and HEAD requests,
which will return an io::ShortWrite error if the user ever tries
to write to a GET or HEAD request.
Closes#77
The old parser used a manually unrolled state machine
and was broken due to upstream rust issues with match
statements.
The new parser is a read into a stack-allocated buffer
followed by a single match on the contents of that
buffer.
This significantly improves the benchmarks for method
reads by almost 30%, in addition to working around
the upstream rust issues with reordering match blocks.