Completely separate the request and response handler traits.

Props to rym_ from #rust for helping me with the macros!