Extra context: API + CLI

Fixes #12
Synthesizes parts of: #75, #100, #116, #161 and #199.
Thanks @fcurella, @aventurella, @emonty, @schacki, @ryanolson!
`cookiecutter.main.cookiecutter()` doesn't have an `extra_context` argument. There is one with `cookiecutter.generate.gerate()`.