New consent model.

Preserves existing UI buttons and behavior. Replacing with a UI that directly
exposes the relevant fields will come later.
Ah, yes. These should be marked private, but I'm having some trouble getting a test (ui.spec.ts) to work when these are private. Will fix that later.