Once the packet format is fully stable, we should write up a spec so that others can implement if they want to do so. Note: we'll need to decide whether we want to do the awesome variable-length headers (#22) or not before we write the spec.