added binary encoding and decoding for multiple macaroons

We're trying to check that the unmarshaled macaroons won't override one another,
so the caveat should be added to the unmarshaled macaroon.

How about something like:

    // The unmarshaled macaroons share the same underlying data
    // slice, so check that appending a caveat to the first does not
    // affect the second.
    err = unmarshaledMacs[0].AddFirstPartyCaveat("caveat")
    c.Assert(err, gc.IsNil)
    c.Assert(unmarshaledMacs[1], gc.DeepEquals, macaroons[1])

To make sure this is a valid test, try removing the third slice index arg
from line 228 of marshal.go and make sure the test fails.