Tests/request

Wrote a ton of tests. Cleaned up some code. Documented some stuff. Added missing methods.
shoulf `forwarded_protocol` use 
```
$_[0]->env->{HTTP_X_FORWARDED_PROTOCOL} || $_[0]->env->{HTTP_X_FORWARDED_PROTO}
```

The shorter name is more common (in my experience), eg. it is what Plack::Middleware::ReverseProxy uses.