Use a case class for composed response functions.

This provides a working `==`, so that `(a ~> b == a ~> b)`

Fixes #260