ALL: Update to asynchronous messaging subsystem

This new messaging system is considerably smaller and leaner. It also
contains a totally new asynchronous API design. This means that you no
longer have blocking network functions like GetSuspect(). Such a function
is awkward to handle in an application since you have to block while
the operation finishes. And if it does not finish, you will deadlock.

The new design requires that you simply send a non-blocking RequestSuspect()
message out. Now the application is free to do whatever it likes until
the response appears, such as display a spinner. The reply callback is handled
separately on a different thread.

Also, this messaging subsystem heavily uses Google protocol buffers. Nearly
all manual serialization has been eliminated. The result is significantly
smaller messages over the wire and vastly more extensible code.