Output JPG files by default

* timestream/__init__.py (create): Change the default image format to JPG.
Address strange characters in the csv file.

* util/derandui.py (_addCsv): We make sure we ignore characters that are not
encodable.
Selected columns will now be shown in derandomization.

* timestream/manipulate/pipecomponents.py (DerandomizeTimeStreams.derandStruct):
We added a text to accompany the pot id. This text is to be put on top of the
pot image.
(DerandomizeTimeStreams.createCompoundImage): Add text from derandStruct to each
pot. We use a font slightly smaller than the subsection title.
* util/derandui.py (_createDerandStruct): For each item in master list that is
selected, we add selection to the pot string.
Add color features.

We also added the ability to return NaN as a valid feature value.
* timestream/manipulate/pipecomponents.py (ResultingFeatureWriter.__exec__):
Output strings instead of floats to the csv files. This allows NaN in the output
stream.
* timestream/manipulate/plantSegmenter.py (StatParamCalculator.errStr): New
class variable. Holds "NaN".
(StatParamCalculator.{compactness,eccentricity,rms}): The default value is now
errStr.
(StatParamCalculator.{gcc,exg,hsv}): New methods that calculate statistics based
on color components.
Check for existing of "settings" it timestream obj

* util/derandui.py (DerandomizeGUI._addTS): Before adding a timestream, check to
see if it has .data["settings"]
Place a NaN in case of exception on feature calc.

* timestream/manipulate/pot.py (ImagePotHandler.calcFeatures): If we see any
error when calculating a feature, replace it with a NaN.
Only one logger for timestreamlib

logger is called "timestreamlib". Can add as many logging handlers to
timestreamlib as needed through add_log_handler.
* run_tests: Dont filter for CONSOLE.
* run_tests_only: likewise.
* scripts/run-pipeline.py: Use new add_log_handler to setup logging.
* scripts/timestream2netcdf.py (ts_to_tsnc): Use timestreamlib instead of
CONSOLE
* tests/test_logging.py (TestLoggingVerbosity): Test if verbosity option sets up
the correct logging level.
* timestream/__init__.py (enum, LOGV): LOGV will hold the verbosity options and
enum will create them.
(NOEOL, NoEOLStreamHandler): Logging handler to allow same line output. Brought
from timestream/manipulate/__init__.py.
(add_log_handler): New method to add handlers to timestreamlib logger. Verbosity
will define the logging level and the format. If a stream is a string we try to
open a file and log there.
(setup_module_logging): Remove this method.
* timestream/manipulate/__init__.py (NOEOL, NoEOLStreamHandler): Move class to
timestream/__init__.py
(setup_console_logger): Remove this method.
* timestream/manipulate/correct_detect.py (LOG): Use timestreamlib instead of
CONSOLE
* timestream/manipulate/pipecomponents.py (LOG): Likewise
* util/class_parser_demo.py: Use the new add_log_handler method.
Add configuration examples to documentation.

* doc/config.rst: New doc file containing all configuration doc.
* doc/index.rst: Add config.rst to the index.
* doc/starting.rst: Fix the hyperlinks.
* scripts/run-pipeline.py (result): Remove comments with doc.
Refactor run-pipeline

Compartamentalize different sections in the cli process.
* scripts/run-pipeline.py (genConfig): New method to generate the plConfig
configuration.
(createOutputs): New method to create files and directories that don't exist.
(initlogging): New method to initialize logging.
(genContext): New method to generate context configuration.
(genExistingTS): New method to generate existing timestamps.
(main): New method that brings everything together.
* timestream/__init__.py (add_log_handler): Be sure to return os.devnull when
setting the logger "fails"
* timestream/manipulate/pipecomponents.py (argNames, __init__): outputPrefixPath
is a more logical name.
Add GUI components to run-pipeline

* scripts/run-pipeline.py: Only output DocoptExit when we are in CLI.
(CLI_OPTS): Add a "-g" option.
(genInputTimestream): We put the initialization of input timestream in a new
method to avoid repeating code.
(PipelineRunner.runPipeline): We put the running of the pipeline in a separate
method to avoid repeating code. We enclose it in a class in order to be able to
stop it from the outside.
(maincli): New method that contains all the CLI execution.
(maingui): Likewise but for GUI.
(PipelineRunnerGUI): Class that contains the GUI execution.
(PipelineRunnerGUI.TextEditStream): New stream to pass to the GUI log. It allows
all the log messages to be output to the TextEdit.
(PipelineRunnerGUI.{TextEditSignal,ProgressSignal,ThreadStopped}): New QT
Signals to admin the execution. The first passes the log messages. The second
manages the progress bar and the third cleans up the progressbar. All are inner
classes.
(PipelineRunnerGUI.PipelineThread): New thread class that will actually execute
the pipeline. Its on a separate thread to add to GUI responsiveness.
fix error due to corrupted image, error due to empty pot
fixed plotting on top of image
Merge remote-tracking branch 'upstream/next' into next
Add script to process experiment BVZ0036