randomized rpc function id

Numbering rpc function id is not a good practice, because we can't
register services from 2 .rpc files to rpc::Server, their function
id will conflict. So we randomly choose 0x10000000~0x70000000 as
rpc function id, which lies in positive i32 range.

When registering rpc handler or service to rpc::Server, if there's
a conflict (not likely), return -EEXIST, and do proper cleanup.