Action future args

This patch adds support for using futures (including clients) as arguments to remote actions. They are handled just like futures returned from actions: they are waited for, serialized and then rewrapped on the other end. It also includes the following needed functionality: `invoke_when_ready(F, Args...)`, `Future::get_exception_ptr`.

This currently doesn't work for `future`, since the implementation cannot handle movable-only arguments. That will be solved by a separate pull request.