Topic/client syntax

This story is almost certainly not finished, but I think this is strictly an improvement on the status quo. 
I think it might be more convenient if withDecoder is curried (as was decode)