compress; threshold option

adds a `threshold` option. response bodies that are below `threshold` will not be compressed. streams will always be compressed, however, since we don't know it's final size.

to do:
- docs - i can do this after you merge this

fixes #795 and #746