macaroon: add packets

This is a preliminary step to using the libmacaroons encoding for everything
and making macaroon operations more efficient too.

We will change the internal representation of macaroons to hold
a single byte slice. This PR adds the low level packet handling
that corresponds to libmacaroons data format.