Merge pull request #1 from vds/master

Implement Marshaler and Unmarshaler interfaces for Macaroon and Caveat.
add TODO
godocdown $(go list .) > README.md
macaroon: simplify AddThirdPartyCaveat by removing assumptions about caveat id encoding.

We leave that decision up to external packages instead;
Merge pull request #3 from rogpeppe/002-simpler-third-party

macaroon: simplify AddThirdPartyCaveat
macaroon: simplify check return value

The multiple return value did not really help anything;
also make a slightly better first party caveat test
Merge pull request #2 from rogpeppe/001-add-TODO

add TODO; update README
Merge pull request #4 from rogpeppe/003-check-no-bool

macaroon: simplify check return value
macaroon: use slice not map in Verify

This makes it possible to have several possible
discharge macaroons with the same id.
macaroon: add TestVerify
Merge pull request #5 from rogpeppe/004-discharge-allow-many

macaroon: allow many discharge macaroons for a given id
update README
Merge pull request #6 from rogpeppe/005-update-README

update README
remove TODO items
Merge branch 'master' of github.com:rogpeppe/macaroon into 006-remove-TODOs
update README.md
Merge pull request #7 from rogpeppe/006-remove-TODOs

remove TODOs
macaroon: add some benchmarks

For the record, here are the current results:

BenchmarkNew	  500000	      4283 ns/op
BenchmarkAddCaveat	  500000	      3402 ns/op
BenchmarkVerifyLarge	   50000	     67773 ns/op
BenchmarkVerifySmall	  500000	      6219 ns/op
BenchmarkMarshalJSON	  500000	      3644 ns/op
BenchmarkUnmarshalJSON	  200000	      8512 ns/op
Merge pull request #8 from rogpeppe/007-benchmark

macaroon: add some benchmarks
macaroon: add packet.go
macaroon: change internal representation

	We change the internal representation to be similar
	to libmacaroon's, with a single buffer holding the
	binary marshalled data