Callbacks payload is a type and optional

Callback arguments are now passed in a type encapsulating them.
This allows to increase the parameters or to send none in case of
an error or timeout.
The internals are using boost::tuple.