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.
The way this is intended to be used, I think it's OK.
In general, we will be declaring known keys. This
function is so simple that to make everyone check the
error when they're passing in a known constant seems
like overkill.