Replaced concrete Request and Response interfaces with generics.

Changed Request contracts to exclude Responder; the responder is injected into the constructor instead.