added binary encoding and decoding for multiple macaroons

oops, I forgot one thing. you'll need to add this method too:

    func (m *Macaroon) appendBinary(data []byte) ([]byte, error) {
       data = append(data, m.data)
       data, _, ok := rawAppendPacket(data, fieldSignature, m.sig)
       if !ok {
           panic("cannot append signature")
       }
       return data, nil
    }

Then change MarshalBinary to use it (that can also use marshalBinaryLen,
fixing the current misestimation bug).