idl-compiler: support multiple return value and optional in a return value
idl-compiler: support multiple return value and optional in a return value

RPC verbs can be extended to return more then one value and new values
are returned as rpc::optional. When adding a return value to a verb
its return values becomes rpc::tuple<type1, type2, type3>. In addition
new return values may be marked as rpc::optional for backwards
compatibility. The patch allow to part return expression of the form:
  -> type1, type2 [[version 1.1.0]]
which will be translated into:
  rpc::tuple<type1, rpc::optional<type2>>

scylladb/scylla,scylladb/scylla,scylladb/scylla,scylladb/scylla