Headers can be specified only at request time

Fixes #64

Headers aren't something that's particularly good to cache, as they don't require that HTTP call, and it can lead to especially subtle / hard to debug issues (I know because I had the issue).
This reserves the key _request_options in case we need similar things in the future.

This is backwards incompatible as it will break client instantiation that specified headers.

we can put {} as the default param for headers instead of `None`