rewrite timeout handling

the handling of timeouts was overly complex and had rather strange defaults
this patch simplifes the configuration for timeouts
now proxy middleware handles timeouts exclusively and `zerovm_timeout` value in object middleware is used only for validation purposes
now proxy middleware config supports `zerovm_timeout` as one of the config values
now `node_timeout` and `zerovm_timeout` are essentially the same, with `zerovm_timeout` being preferred if exists
there is a new hardcoded value `TIMEOUT_GRACE` which tries to gracefully shutdown the whole timeout chain to correctly get the results from lower levels
pseudocode:

	with proxy.Timeout(timeout + TIMEOUT_GRACE * 2):
		with object.Timeout(timeout + TIMEOUT_GRACE):
			with zerovm.Timeout(timeout):
				# run zerovm session

docs updated
Merge pull request #103 from pkit/timeout

rewrite timeout handling
add pax headers to tar

gtar can use special headers to carry metadata
will be used to carry channel metadata for each chennel we pass in response from objectquery middleware
fix update_metadata()

it was checking for length of keys, without using full key length
refactored slightly to be more flexible
use tar pax headers for better header support

this patch removes sysmap bounce from objectquery to proxyquery
instead all the headers per channel are transferred inside tar metadata (PAX POSIX.1-2001)
by using pax headers we can attach a full set of HTTP-like headers to each and every channel we return from objectquery
it simplifies internal logic and allows for better CGI support in the future
better pass response headers to user

this patch will pass as many headers as possible from the output of user script/application to the appropriate channels
it is mainly useful for channels of `message/cgi` or `message/http` type
for these channels all their output headers and their status will be passed on to the final reponse the user gets
of course it means that `message/cgi` or `message/http` channel should have no `path` defined
caveats:
- if you define clustered job and have multiple output channels without `path` their bodies will be concatenated as usual, but their headers will overwrite one another in an undefined way, beware!
- if you defined multiple `message/cgi` or `message/http` channels without path the results will be even stranger than that, beware!