Generate Null pixmap when removing last list elem

* util/derandui.py (onClickTimeStreamList, showImage): We remove image from
scene by creating a pixmap of size 0,0.
Add the combobox in the second column.

* util/derandui.py (DerandomizeGUI.__init__): Initialize QComboBox_CSV and place
it in (0,1)
(DerandomizeGUI.selectCsv): Call fill method so first column gets filled.
(QComboBox_CSV): New class that will hold item(0,1).
(QComboBox_CSV.fill): Read a specified column and put it in column 1
Remove Combo Box specific classes.

The two first columns are interelated to the point where it makes sense to have
them together under the same class.
* util/derandui.py (Firsttwocolumns): New class holding logic to manage the
relation between the first two columns.
Improve internal consistency in FirstTwoColumns

* util/derandui.py (refreshCol{0,1}): New names for onChange methods. They
reflect the fact that the column is actually being changed. Also, we make sure
that we catch ignore index=-1.
(__init__): Add some class documentation.
Add swapRow method.

* util/derandui.py (swapRow): New method that will swap two row numbers. It will
swap all the columns except 0
Reorder Col1 based on Col0

* util/derandui.py (FirstTwoColums.E): String "--empty--" to put in empty rows
to identify them
(FirstTwoColums._num0Rows): Number of rows for column 0. This is different from
the number of rows in the table.
(refreshCol{0,1}Header): Use method setCurrentIndex to initiate refreshCol{0,1}
calls.
(refreshCol1): Skip the empty rows when copying to column 1
(colsRebind): This will refresh the relation between col0 and col1. Col0 will
not be reorder, but col1 will be reordered (together with the rest of the
columns 2...end) to have a 1-to-1 relation with col0. If we find no relation we
insert an empty row.
(swapRow): By default we fill the cell with (" ")
Stop ignoring the first 2 columns of csv file

* util/derandui.py (selectCsv): Adjust the csv index by 2
Check combo box size before continuing

* util/derandui.py (colsRebind): We don't continue if there are no actions in
any of the comboboxes.
Define the colsRebind range with self._num0Rows

* util/derandui.py (colsRebind): We traverse all the elements in col0
Explicitly call refreshCol0 when removing col0

* util/derandui.py (refreshCol0Header): Subject
Change csv class name to BindingTable

* util/derandui.py (BindingTable): New name for the FirstTowColumns class.
Expresses better what the class does.
Handle when the user hits cancel on csv file.

* util/derandui.py (selectCsv): Subject
Remove self._csvfilename

* util/derandui.py (selectCsv): Its a temporary variable. No need to make a
instance var.
Rebind the csv table after we remove TS.

* util/derandui.py (removeEmpties): New method that removes empty rows created
by the script.
(colsRebind): Activate rebind when col0 is empty but co1 still contains the csv
information.
selectCsv is now in BindingTable.

* util/derandui.py (selectCsv): Subject
Add class variables for reserved columns and rows

* util/derandui.py (RICN): Variable that will hold the Reserved initial column
number
(RIRN): Will hold the Reserved initial Row Number.
Use col 2 for derandomization element seleciton

* util/derandui.py(BindingTable.refreshCol2Header): New method that takes care
of the combobox in column2 header.
(BindingTable.refreshCol2): New Method that takes care of mirroring any column
from csv to col2.
(BindingTable.selectCsv): Call refreshCol2Header when csv is uploaded.
Emit a signal when relation col0 and col2 changes.

* util/derandui.py (DerandomizeGui.imgRefresh): New method that will be called
everytime the text in the image needs to be painted.
(BindingTable.c02RelationChange): New signal that emits when relation changes.
Refactor BindingTable's column refresh logic

The columns now need to be refreshed in a specific order. 0->1->2. This is done
to be able to reorder all the csv information in a efficient way.
* util/derandui.py (BindingTalbe.imgRefresh): Don't print anything for now.
(BindingTable._colActionDispatcher): New method that anlyzes what type of change
is happening and calls the refresh methods in the required order.
(BindingTable.refreshCol{0,1,2}Header): To these methods we added a blockSignal
call in order to avoid signals firring while we do changes in the comboboxes.
(Bindingtable._refreshCol{0,1,2}): We move some of the logic in the removed
colsRebind method into these methods. It is important to call them in the
correct order 0>1>2.
(BindingTable._blankCol): New helper method to blank columns.
(BindignTable._copyCol): New helper method to copy one column to another offset.
Emit signal only when col{0,2} are not empty

* util/derandui.py (BindingTable._colActionDispatcher) : Check to see if both
columns are none empty before emitting the signal.