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.
Rename "tests" make rule to "check".

(This is for consistency with Rust.)
Fix test compile errors.
More intelligent "make check" dependencies.
Fix up header tests and HTTP-date bugs.