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 can't be caused by an invalid macaroon. It can only be caused by someone *creating* a bad caveat, which is a serious bug and one that's really not likely to happen. I reserve my right to change my mind about this when we find real code that triggers the panic, but for the time being, let's keep it trivial to create these caveats.

Another approach might be to log the error and just create a caveat which is always false.