Generic Server for C# inspired by Erlang gen_server