Improve the simulator for the greedy algorithm
Small changes to make it compatible with python 3

Small changes to make it compatible with python 3 at the same time it is
compatible with python 2.
Improve the print_statistics_table function
Raise SkipThisOne exception on IA algorithm error

If the MMSE IA algorithm raises a RuntimeError or a LinAlgError
exception and thus don't find a solution, then the SimulationRunner will
raise a SkipThisOne exception to skip the current repetition. Hopefully
in the next one (with new channel and precoder initialization) the IA
algorithm will find a solution.

This change makes the simulator robust ill conditioned conditions,
which will simply be skipped.
Fix wrong base_name in main_plot function
Merge branch 'greedy_simulator'

New improvements to the greedy IA simulator.
Add a more parameters to greedy simulator

Particularly, add the "stream_sel_method" parameter to select the stream
selection algorithm (either greedy or brute force) instead of simulating
both cases in the same 'simulation'. This allows taking advantage of the
parallel capabilities of the SimulationRunenr class.

The config spec was also updated/improved to reflect the changes in the
simulation parameters.
Use pickle protocol 2, instead of HIGHEST_PROTOCOL

Use pickle protocol 2 in the SimulationParameters save_to_pickled_file
method, instead of HIGHEST_PROTOCOL. This way we use the same protocol
in either python 2 or python 3.
Remove extra print statement left by mistake
Improved code quality

Break long lines, add comments and small improvements to docstrings.
Improve the greedy simulator and fix wrong filename
Implement delete_file_if_possible for the tests

Replace the use of 'os.remove' by 'delete_file_if_possible' in the test
files. The difference if that delete_file_if_possible won't raise an
IOError exception if the file can't be removed.
Fix bug: unpacked parameters order could change

Fix a bug where the order of the unpacked parameters list in a
SimulationParameters object could change after the object was saved to a
file and loaded back from the file into another object.

Now the order is guaranteed by sorting (alphabetically) the list of
unpacked parameters.
Add plots for Brute Force stream selection method

Add plots for Brute Force stream selection method in the greedy
simulator.
Ignore text files created by the progressbar class

Ignore text files indicating the progress, which are created by the
progressbar classes.
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
Fix wrong values in greedy_statistics
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.