Yeah we're losing some of Retrofit's magic with all of these. Here's the current use-cases (which I'll be documenting):

 * `RequestHeaders` - Things scoped to every request. Authentication, client info, etc.
 * `@Headers` - Per-method static headers. Cache-control, API flags (like a beta header)
 * `@Header` - Dynamic per-method header. Things changing per-request.

One of the reasons I don't want to do this at the client level is that we change the client based on platform. JVM gets UrlConnection, Android pre-2.3 gets HttpClient, Android post-2.3 gets UrlConnection, and anything with OkHttp gets OkClient. This is all done automatically by default. If we required users to extend a client to add headers they'd have to do this logic themselves.