message: do not erase client's rpc call type
message: do not erase client's rpc call type

Currently we cast rpc call lambda to std::function (to put all lambdas
in one container) which removes its template properties and gives it
strictly typed interface. This is inconvenient since interface may either
receive an object by value (which requires copy during invocation),
or by reference (which require lifetime management), but not both. This
patch changes the implementation to no store lambda in one central
place, but create it with rpc::make_client() call when used. This way
template properties are preserved and send_message() arguments are
forwarded to rpc call with original types.

Reviewed-by: Asias He <7487d0432e24c09ba3f2ff7de44b9eb030d5ae18@cloudius-systems.com>
gwicke/scylla,respu/scylla,victorbriz/scylla,glommer/scylla,shaunstanislaus/scylla,linearregression/scylla,dwdm/scylla,respu/scylla,raphaelsc/scylla,stamhe/scylla,linearregression/scylla,aruanruan/scylla,tempbottle/scylla,asias/scylla,raphaelsc/scylla,dwdm/scylla,tempbottle/scylla,dwdm/scylla,avikivity/scylla,kjniemi/scylla,eklitzke/scylla,tempbottle/scylla,senseb/scylla,avikivity/scylla,wildinto/scylla,phonkee/scylla,raphaelsc/scylla,kjniemi/scylla,aruanruan/scylla,gwicke/scylla,justintung/scylla,guiquanz/scylla,scylladb/scylla,kangkot/scylla,rentongzhang/scylla,acbellini/scylla,capturePointer/scylla,rluta/scylla,capturePointer/scylla,duarten/scylla,bowlofstew/scylla,kangkot/scylla,scylladb/scylla,rentongzhang/scylla,respu/scylla,phonkee/scylla,victorbriz/scylla,wildinto/scylla,shaunstanislaus/scylla,scylladb/scylla,glommer/scylla,avikivity/scylla,gwicke/scylla,shaunstanislaus/scylla,senseb/scylla,stamhe/scylla,kangkot/scylla,guiquanz/scylla,rluta/scylla,phonkee/scylla,scylladb/scylla,stamhe/scylla,capturePointer/scylla,glommer/scylla,bowlofstew/scylla,victorbriz/scylla,justintung/scylla,bowlofstew/scylla,kjniemi/scylla,rentongzhang/scylla,linearregression/scylla,wildinto/scylla,duarten/scylla,acbellini/scylla,eklitzke/scylla,rluta/scylla,asias/scylla,eklitzke/scylla,acbellini/scylla,justintung/scylla,duarten/scylla,senseb/scylla,guiquanz/scylla,asias/scylla,aruanruan/scylla