Client-side Proc-Macro crate
We separate proc-macro expanding logic to an extern program to allow
different implementations (e.g. wasm or dylib loading). And this crate
is used to provide basic infrastructure for communication between two
processes: Client (RA itself), Server (the external program)