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.
Typically examples are written in doctest style, which is [part of the ReST spec](http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#doctest-blocks). We should try to follow this; in this case, it'd be
```
>>> max_steps = 10
>>> with Progress(max_steps) as progress:
...     for i in range(max_steps):
...         # do something
...         progress.step()
```