'init' phase for interceptors

Interceptors may now define an 'init' phase for one time interceptor
initialization. The config object is passed to the init function and the
configuration must be returned from the function.

Interceptor config objects are now begotten to isolate local property
changes from other interceptors that may happen to share the same config
object. This also means that the config object is now a safe place to
store values that should be shared across multiple requests of the same
interceptor.
oAuth interceptor should use interceptor base

Issue: #14
Update interceptors to use init phase where appropriate