Implementing Marshaler and Unmarshaler interfaces for Macaroon and Caveat.

Since all the calls to keyedHash now pass a string, we might as well make its argument a string rather than a []byte.