Protocol buffers change everything

Sorry that this changeset is ginormous.

Also sorry that it doesn't work. It does compile, though (but you
have to compile the protoc manually for the time being.)