Fancy progress

This PR implements fancy progress tracking:

* Progress bar will automatically be shown if the ETA is more than a second.
* Progress will be displayed visually as a bar and also as a percentage number.
* The progress bar displays the ETA (estimated time of arrival). (Though, I'm using the simplest possible formula to calculate it right now.)
* The progress bar will display how long the simulation took after finishing.
* The width of the progress bar adjusts to the terminal width if Python >= 3.3 is used (otherwise it defaults to 80 characters)
* In an IPython notebook a fancy HTML/Javascript progress bar will be rendered.

This PR is an alternative suggestion to PR #476.
Could this be moved to `ipython.py`? Also, possibly wrap it with a function so that it's more accessible. 

Would it make sense to have something like an `ipython_info` function or object that says 1) whether we're running IPython, 2) whether we're in an interactive console, notebook, or just running from the command line, and 3) whether we have widgets?