Topic/client syntax

This story is almost certainly not finished, but I think this is strictly an improvement on the status quo. 
another example could be when you use one decoder for Ok and another for errors (e.g. other status):
```scala
Task(req).onStatus{
  case Ok => successDecoder.map(\/.right)
  case _    => failureDecoder.map(\/.left)
}
```