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.
Was there some reason that the original code printed a debug message every 1000 steps? It seems quite arbitrary to me. Would it be fine to take this out? Maybe we could allow users to specify their own observers, if there's demand for it.