Add a bit of a hacked up, scary implementation of protobuf decoding.

There's no method built into the protobuf library for parsing a
delimited stream (each msg prefixed with the length) so I had to roll
our own - it's not too complicated in theory but it doens't really jive
without old way of parsing messages, so this got a bit ugly.
Fix the dashboard with a quick hack to the "data remaining" check.
Update generated protobuf format.