Refactor progressbar classes

Create a new ProgressBarBase class to hold common code to any
progressbar. The ProgressbarTextBase now only holds common code to text
based progressbars.
Implement a progressbar using IPython widgets
Add an optional message to the IPython progressbar
Add new argument to MIMO simulation runners

Add the read_command_line_args argument to MIMO simulation runners which
will pass this to the base class.

This is important to run these inside IPython notebooks, where we need
to set read_command_line_args to False.
Set plot_args to {} when it is None

When the plot_args arguments in the plot functions (plot_ber, plot_ser
and plot_ber_and_ser) is set to None (the default) it should be
interpreted as an empty dictionary.
Make simulator compatible with IPython notebooks

The plt.show function does not seem to have the 'block' argument when
run inside an ipython notebook. Now when we pass the block argument to
this function we run it inside a try/except block to protected against
this.
Fix: progressbar and text were not side-by-side

Fix small bug in IPython progressbar where the float progressbar and the
text widget were not displayed side-by-side. The text was appearing
below the progressbar.
Add ipython to the list of update progress styles

Add 'ipython' to the list of possible values for the
update_progress_function_style variable. When it is set to 'ipython' an
IPython based progressbar will be used. Note that this will only work if
the simulator is running in an IPython notebook.
Small fix in a docstring
Fix Alamouti notebook and use ipython progressbar

Fix the Almouti notebook after past changes in PyPhysim broke it

Also use the new ipython based progressbar style.
Merge branch 'IPythonProgressBar'