added binary encoding and decoding for multiple macaroons

I don't think this is quite right. appendBinary should append the whole contents of the macaroon. As it is, it's just appending the signature. I think you want something like:

    data := make([]byte, 0, m.marshalBinaryLen())
    return m.appendBinary(data)

Then appendBinary would be:

     data = append(data, m.data)
     return rawAppendPacket(data, fieldSignature, m.sig)