Handle enums as varints in PB::Binary::Writer
Safely handly negative values in write-varint()
Handle repeated fields in write-message()

A small amount of refactoring, plus support for .pb_packed in the field
attributes, but mostly changes to write-message() to support simple and
packed repeated fields.