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
Can you expand on this comment, please? How does tab completion work if (at least some) keystrokes aren't being processed immediately?