Extra context: API + CLI

Fixes #12
Synthesizes parts of: #75, #100, #116, #161 and #199.
Thanks @fcurella, @aventurella, @emonty, @schacki, @ryanolson!
Yeah, we should check everything, but I'm happy to preserve backwards compatibility for this round.
Also, we don't really have any documentation for this stuff, so it's gonna need another pass anyways.