Add basic support for interceptors

@JakeWharton @jhump @swankjesse 
Maybe consider using a builder and letting interceptors mutate it instead of having to construct intermediate immutable messages?