Should this be equal only if the other is an instance of `BasicCredentialMetaData`?  Or are `CredentialMetaData`s always equal if they have the same `id` string?  If `CredentialMetaData` does resolve down to the String properties of their `id`s, then can we represent credential metadata simply as `String`s directly representing the `id`? :)

I *think* I'm suggesting that `CredentialMetaData` should be removed in favor of just representing with straight up `String`, but I may not be understanding this well enough yet.