Implement logging in manipulate subpackage

Now, the logging module is used to convey messages to the user.
Basically, print(x) was replaced with LOG.(error|warn|info)(x) as
appropriate. You should call ts.manipulate.setup_console_logging() at
the start of any scripts if you want verbose logging.

 Changes to be committed:
	modified:   timestream/manipulate/__init__.py
	modified:   timestream/manipulate/correct_detect.py
	modified:   timestream/manipulate/pipecomponents.py
KDM review of whole mainipulate subpackage

FIXME comments added, logging set up, flake8 errors largely fixed, some
major refactoring still to do.

 Changes to be committed:
	modified:   timestream/manipulate/configuration.py
	modified:   timestream/manipulate/correct_detect.py
	modified:   timestream/manipulate/netcdf.py
	modified:   timestream/manipulate/pipecomponents.py
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.