a bunch of things, important things:

- Some useful logging around the request lifetime
  - logging Heroku's request_id
  - still no tracking of timeouts raised inside frameworks
- Aware of Heroku's X-Request-Start header, uses it to determine maximum useful timeout (Heroku drops requests in the router after 30s)
- Rack::Timeout::Error no longer a subclass of Timeout::Error, instead simply of RuntimeError, because…
- raising two different errors now: RequestTooOldError and RequestAbortedError, which subclass the new Rack::Timeout::Error
  - RequestAbortedError is raised where the old (Rack::)Timeout::Error was raised
  - RequestTooOldError is raised when X-Request-Start is present and too old
- Information that could be useful outside of rack-timeout, like age and timeout, is made available in env
what turned out to be a major refactor just to log aborted requests properly in rails
a bunch more refactoring; notable changes:

- don't log a new if state is not altered
- generate our own request id when HTTP_HEROKU_REQUEST_ID is not present
- use a RequestData struct to contain our env stuff instead of various rack-timeout.key-name keys in env
use key-value notation even for log line prefix
this should handle the default sinatra situation, i.e. without `disable :show_exceptions` or `enable :raise_errors`
ALWAYS BE REFACTORING
Special-casing sinatra. Very upset about putting framework-related code in a rack middleware. Konstantin owes me a margarita.
bump version to 0.1.0 since this is gonna be big. plus, incompatible changes, too
I guess I should call this a beta version.
rename RequestData to RequestDetails
rename RequestTooOldError to RequestExpiryError, RequestAbortedError to RequestTimeoutError
refactoring and renaming a bunch:

- states: dropped is now expired, aborted is now timed_out
- AbortionReporter is now TimeoutTracker
- set_state_and_log! is now set_state!; it still logs, but by calling log_state_change
- perform_reporting_abortion_state_in_env is now perform_block_tracking_timeout_to_env
- set_state! validates state against ACCEPTABLE_STATES
no need for require_relative here
prefix with an underscore methods that people shouldn't be calling externally but that would be trouble making private/protected
comments
replace log_state_change with a generic callback infrastructure for state change notifications.

this allows the default logging to be removed, and also any other tracking behavior to be added.
Add StateChangeLogger class, initialize logging by default
majorly expand readme to cover all the new stuff