bakery/checkers: add Declared and InferDeclared

This allows macaroons to declare information by adding a first-party
caveat. The declarations inferred are valid after caveat checking because
we guarantee to check all discharge macaroons when verifying. A client can
add another declaration caveat, but they can't change the value of an existing
declaration.

To come: built in support for third party caveats that require a set of
declarations to be added when discharged.
This is an issue with any caveat - first party caveats will all be interpreted in the namespace of the first party. If someone adds a caveat that they intend to mean one thing, but the checker inteprets it a different way, there's little that can be done. That's why I want to standardise on checker names. We could perhaps have a convention for caveats that the first party defines locally, an "x-" or "local-" prefix for example. Third parties would never add caveats with that prefix.