Add skimage deps to preinstall_requirements

* preinstall_requirements: add networkx and pillow
If ts has less than 10 images don't add it.

* util/derandui.py (DerandomizeGUI._addTS): Raise RuntimeError if ts has less
than 10 images.
Derandomizer. Error if CSV headers are not unique

* util/derandui.py (DerandomizeGUI._addCsv): We cancel the CSV upload if we find
repeated headers.
Metas is a PCFGSection.

* timestream/manipulate/configuration.py (PCFGConfig.argNames): The dictionary
in the configuration file will be translated into a PCFGSection.
Activate sub sec checks for dates and times.

* timestream/manipulate/configuration.py (PCFGConfig.autocomplete): When we
don't have enough data to autocomplete date and time, we error out. This happens
when the user specifies {start,end}Date or {start,end}RangeHour and is missing
one component.
Increase the depth of timestream.yml config file

This in order to get to general.metas.id.
* scripts/run-pipeline.py (genConfig): Call append with depth = 2.
* timestream/manipulate/configuration.py (PCFGConfig.createSection): Include a
section as a dictionary only when the dictionary is all indexed by strings.
Create PCFGListSection for pipeline and outstreams only.
Eliminate the "-" between outsuffix and outstream

* scripts/run-pipeline.py (genContext): Subject.
* timestream/manipulate/pipecomponents.py (ResultFeatureWriter.__init__):
Subject. We add a "-" separator in the csv output as it is no longer in the
suffix.
Allow for time specifications to be None

* scripts/run-pipeline.py (genInputTimestream): We allow the user to specify
None for start and end time specifications. This will mean consider all times.
WindowsError can occur when reading images.

* timestream/parse/__init__.py (read_image): Add a WindowsError to the possible
errors that can occur when reading an image. When in a platform other that
windows we use None.
Create a test for run_pipeline.

* scripts/run_pipeline.py: Rename run-pipeline.py to run_pipeline.py to allor
`from run_pipeline import maincli`.
* scripts/run_pipeline.ui: Rename run-pipeline.ui for consistency.
* tests/helpers.py: Add directory in tests/data that contains the test images.
* tests/test_pipeline.py: New test. We:
    1. Run the pipeline
    2. Create a corrected Timestream
    3. Create a segmented Timestream
    4. Create CSV Feature output
    5. Check creation of directories and images
    6. Check creation of pickle files
    7. Check internals from pickle files.
Update test/data submodule

* tests/data: We include the new test directories from the data repository.