Extra context: API + CLI

Fixes #12
Synthesizes parts of: #75, #100, #116, #161 and #199.
Thanks @fcurella, @aventurella, @emonty, @schacki, @ryanolson!
Should this check be before the update with ```default_context```? As it stands, it will let through keys that are in ```default_context``` but not in the project JSON file, which is probably not what you want. (If you agree, it might be worth adding a test covering this, so any future refactorings don't reintroduce the issue).