Refactor third-party caveat encoder/decoder to caveatid package.

Remove non-public key third-party caveatid encoding. This can be added
later as an alternative implementation of CaveatId{Encoder,Decoder}.
Updated httpbakery & tests accordingly.
Opinionated and specific bakery refactoring.

Third party caveats will use NaCl box public-key encryption for encoding
caveat ids. Removing interfaces and layers of indirection.
Add NewKeyPair for using an existing KeyPair.
fixes for httpjson changes.
Also update to use new errgo path.
gofmt
Merge pull request #23 from rogpeppe/025-update-for-jsonhttp-changes

fixes for httpjson changes.
Opinionated and specific bakery refactoring.
bakery: remove Discharger
Merge remote-tracking branch 'origin/cmars-003-caveatid-pkg' into cmars-003-caveatid-pkg

Conflicts:
	bakery/discharge.go
	bakery/keys.go
	bakery/service.go
	httpbakery/discharge.go
Expose bakery.KeyPair members, comment & other review fixes.

Using nil PublicKeyRing map for when no third-party caveats are
supported.
Merge pull request #22 from cmars/cmars-003-caveatid-pkg

Refactor third-party caveat encoder/decoder to caveatid package.