charm: change VerifyWithCharms to check charm options.

We also change it so that it takes a map[string]Charm
so it has access to the charm metadata. Strictly speaking,
that's more info than it needs (it doesn't use the charm
actions) but we think the API cleanliness makes it worthwhile.
Seen here and in different other places, that some errors have been generated by other verifications before. This relies on the call order of the verification functions. Cannot describe, but seems a bit flaky to me.