Make TeeInput read no more data than is allowed by the HTTP headers.

In the future, this change will be used as a building block for implementing
proper EOF simulation on rack.input. The current implementation on
UnseekableSocket is not entirely correct, as documented here:
https://groups.google.com/forum/#!msg/phusion-passenger/bfY4EQguW5o/V4YxH_Wd_qYJ
Treat non-GET/HEAD methods without Content-Length and Transfer-Encoding as having no request body.

While we're at it, clearly define the various request body handling strategies.