[Extensions Bindings] Handle updating context permissions

Extensions can update permissions during a context's lifetime (by
requesting or removing optional permissions). In this case, we need to
update the bindings for that context. This includes two pieces:
- Ensuring APIs from new permissions are present
- Ensuring APIs that require removed permissions no longer work

Note that we don't actually *remove* APIs that required old permissions;
we just disable them. This is partially for simplicity and partially
because removing the API from the chrome object wouldn't really matter,
since scripts could cache the API object somewhere.

BUG=653596

Review-Url: https://codereview.chromium.org/2891123002
Cr-Commit-Position: refs/heads/master@{#474523}
9 files changed