added binary encoding and decoding for multiple macaroons

This is great in general, but let's be a little more efficient on space.
It doesn't cost too much.

    size := 0
    for _, m := range ms {
        size += m.marshalBinaryLen()
    }
    b := make([]byte, 0, size)

where marshalBinaryLen is defined in marshal.go:

    func (m *Macaroon) marshalBinaryLen() int {
    	return len(m.data) + packetSize(fieldSignature, m.sig)
    }

and packetSize is defined in packet.go (make rawAppendPacket
use it too).

    func packetSize(field string, data []byte) int {
	 return 4 + len(field) + 1 + len(data)
    }

Then we'll do exactly one allocation for the whole slice.