Look for HTTP_X_REQUEST_ID in addition to HTTP_HEROKU_REQUEST_ID before generating our own id.
stop relying on ruby's timeout, use our own simplified version of it…

this allows to remove a bunch of monkeying around with exceptions and middlewares and other stuff to try to catch a timeout and log it.
Add description strings to raised errors
stop special-casing FINAL_STATES, let states always get set.

The most immediate impact of this is that rails and sinatra apps will by default see state change to completed after being set to timed_out, as the frameworks will catch the timeout and do their own error handling.
track a new :active state by logging we're still waiting on the other thread every ~1s
allow requests with a body to be much older than MAX_REQUEST_AGE as they may have taken long for a slow client to upload them
Update readme regarding all the new things.