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.