How ipython works

Work in Progress: Project Jupyter Overview and Orientation Documentation

[Quick link to the rendered version](https://github.com/brandon-rhodes/ipython/blob/how_ipython_works/docs/source/development/how_ipython_works.rst)

----

All,

This pull request is for the orientation documentation begun during the SciPy sprints. So far I have tried to capture the information shared with us during the sprint by Fernando in addition to some historical bits gleaned from presentations ([here](https://speakerdeck.com/fperez/project-jupyter) and [here](https://speakerdeck.com/fperez/pydata-2013-keynote-ipython-and-friends)). I'm submitting this PR at Fernando's request to provide some visibility and a forum for comments.

It is obviously rough, but hopefully provides enough structure and substance to determine if I am headed in the right direction or not. For expediency's sake I have used ASCII art for some of the figures (woot!); we've also got some figures drawn by Ed Pierce that I need to wrangle out of the email.

Here's [Olga's original PR](https://github.com/ipython/ipython/pull/5665)

IPython is awesome! Thanks for the opportunity to make a small contribution!
dan

/cc @fperez
Tab is a bit of a special case - it's captured by readline and triggers a callback to produce the completions. There are a handful of keystrokes that we do see instantly - tab, ctrl-c, ctrl-d (and tab is the only one of those that is different from just calling input()). Most keystrokes we only see when the user presses enter.