New consent model.

Preserves existing UI buttons and behavior. Replacing with a UI that directly
exposes the relevant fields will come later.
onceStopped could be raised for two reasons: user stops proxying, in this case core.stop is called, or remote user stops proxying, in that case there might be few seconds delay.

See #249 for more info.