Add the ETag response header.
Fix the ETag response header.

(I was working on a machine without Rust handy.)
Don't unquote extension headers (e.g. Cookie ain't quoted).
Provide debug output for malformed header value.
Write \r\n after extension headers.

This had the effect that any server response with extension headers or client
request with extension headers would be sent correctly as the end-of-headers
marker was not there. Whoops.
Add -Z debug-info back (fixed upstream).
Fix up some test compile failures.
Client: replace TcpStream with generics for testing.
Remove unused imports.
Fix test warnings about unnecessary allocations.
Add a client test.
Use char literals instead of codepoint numbers for constants.
Add the Content-Type header.
Improve Accept-Ranges header compliance.
Generate headers::{request, response} with a macro.

This leads to a very significant reduction in duplication.
Use a more robust "header value finished" check.

This won't affect the particular case it's used in now, but will affect
other header values that I'm working on.

This *is* now a destructive function (as noted in the method docs), but
I believe that will normally be what I require. For other cases, there
is still ``self.state == Finished``; it may be safer not to have this in
a method, hence its present removal.
Add HeaderConvertible tests for ~str and uint.
Merge (fixes a couple of minor errors also).
Fix a logic error in reading quoted-string.
Fix compilation from latest changes.