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.
This is a bit complicated:

* `time` is not guaranteed to give more than 1s resolution and thus should probably not be used here for that reason.
* But then again, it is stated in the Python doc that the most accurate time available will be used. (I assume that in theory might still be worse than `clock` as `time` is in regard to a defined reference point whereas `clock` has no defined reference point.)
* `time` is not guaranteed to monotonically increase (the system clock could change in between calls)
* `clock` might overflow on 32-bit Linux systems after 72h, but a simulation could very well run longer.
* `clock` resolution on my Linux system is 10ms, much lower than `time`
* `clock` does not guarantee a specific accuracy and it might no be the best accuracy available.
* `clock` was deprecated in Python 3.3 in favour of the new `process_time` and `perf_counter`.

To me it seems best to just stay with `time`. It is a lot simpler than dealing with a mix of `time`, `clock` and `process_time` necessary otherwise. The accuracy should be sufficient on all major OS and if not nothing break terribly (the progress bar would not be as smooth). The only thing to consider is whether to handle updates to the system clock (those could prevent the updates to the progress bar effectively completely if the time jumps far back).