Initial implementation of interceptors.

I'm anticipating implementing interceptors at two independent parts
of the API. The first is high-level interceptors, that intercept
before the socket connection has been established.

The second set of interceptors will only execute for requests that
require a socket connection. Those are forthcoming.
Does this mean that if I have a set of request interceptors and a set of response interceptors then I'd have to implement it something like this:
```java
client.interceptors().add(new Interceptor() {
      @Override public Response intercept(Chain chain) throws IOException {
        Request originalRequest = chain.request();

        // Request interceptor 1
        Response originalResponse = chain.proceed(firstRequestInterceptor(originalRequest));
        // Last response interceptor
        return lastResponseInterceptor(originalResponse);
      }
    });

client.interceptors().add(new Interceptor() {
      @Override public Response intercept(Chain chain) throws IOException {
        Request originalRequest = chain.request();

        // Request interceptor 2
        Response originalResponse = chain.proceed(secondRequestInterceptor(originalRequest));
        // Second to last response interceptor
        return secondToLastResponseInterceptor(originalResponse);
      }
    });

client.interceptors().add(...);
```
I'd have to continue adding request interceptors in chronological order and corresponding response interceptors in reverse chronological order order until I hit the last request/response interceptor. This will be tricky when there are more response interceptors than request interceptors.
Methinks I'm overlooking some detail, but how would I go about adding an ordered series of request/response interceptors without using this nested approach?