native-fetcher-ka: save state

- make it use keepalive by adding the appropriate request header
- make it pass the system tests.
- fixes connections getting reused while they are servicing other requests:
  remove connection from the pool of available connections for keepalive when applicable
- disable keepalive in more appropriate situations
- fix 0 bytes response body edge case
- style fixes, renames
- remove unused default value in SetKeepAlive() arg
- remove connections that timeout from the k.a. pool
- add a few checks for sanity
- add a few todo's for more sanity checks & fixes
- improve behaviour when parsing over multiple read() calls with different states
- increase 5000ms timeout with hard-coding to test another timer failure
- emit debug messages for traceability
- fix a few compiler warnings