Abbreviate to ccdParams and ccdPyramid

* timestream/manipulate/pipecomponents.py (ColorCardDetect.__call__): We should
not abbreviate the variables that are used in the configuration file:
colorcardTrueColors, colorcardFile, colorcardPosition.... Since colorcardParams
and colorcardPyramid are not in the config file, we should abbreviate.
Remove writeImage.

* timestream/manipulate/pipecomponents.py (ImageColorCorrector): Remove
writeImage variable; it was unused and unnecessary. It is replaced by the
ResultingImageWriter component.
Avoid replacing the image in pipecomponents

* timestream/manipulate/pipecomponents.py (PlantExtractor.segAllPots): Just
assign mask for each ImagePotHandler. Do not replace the image in
TimeStreamImage.
(ResultingImageWriter.argNames): Add new argument "masked". When this arg is
True the component will try to write the image with its masked.
(ResultingImageWriter.__call__): Use ImagePotHandler.getImage to create the
resulting written image. Remove putStatsAllPots.
* timestream/manipulate/pot.py (ImagePotHandler.getSegmented): Refactor the
logic that replaces current mask with previous mask.
Implement leaf counting.

* timestream/manipulate/plantSegmenter.py (StatParamLeafCount): New class that
contains the statistical parameter for counting leaves.
(area, perimeter, roundness, compactness, eccentricity, mincircle): For all the
methods generating the statistical parameters add an img argument.
(StatParamCalculator.leafcount1): New method that calculates the number and
location of leaves within the pot. We applied  "3-D Histogram-Based Segmentation
and Leaf Detection for Rosette Plants" Jean-Michel Pape et. al. 2014.
* timestream/manipulate/pot.py (calcFeatures): Use new statistical parameter
calculator method with the new argument.
Add RMS to our calculations.

* timestream/manipulate/plantSegmenter.py (rms): Calculate RMS with the help of
eccentricity.
Output time stream name is now settable.

* util/pipeline_demo.py: By default the output time stream suffix is the same as
the input time stream name. This created unwanted behavior when the last part of
the input time stream appeared in the output name. This can now be circumvented
by adding specifying the root name of the timestream by using "tsdirrootname" in
the timestream.yml config file. "tsdirrootname: BVZ0036-GC02L-C01~fullres" would
be a valid line.
User now controls the name of the csv output dir.

* timestream/manipulate/pipecomponents.py (ResultFeatureWriter_csv): We use
outputPathPrefix of the context to set the prefix for the csv output dir.
* util/pipeline_demo.py (outputPrefix): is the config var that contains the
preferred name of the output basename dir.
(outputPath): Directory where resulting directories will be put
(outputPathPrefix):  Convenience var outputPath/outputPrefix. Where outputPrefix
will identify all the outputs from this run in that directory.
Prepend the prefix name to the output statistic files.

Use outputPrefix in the csv statistic file name.
* timestream/manipulate/pipecomponents.py: Use context.outputPrefix val
* util/pipeline_demo.py: Create a context.outputPrefix value
Allow user to choose type of timestamp

We default to %Y_%m_%d_%H_%M_%S_%02d.
* timestream/manipulate/pipecomponents.py (ResultFeatureWriter_csv.__call__):
Default to calendar format, but allow the user to choose between a custom
format, Linux seconds or Linux milliseconds.
Remove unnecessary warning.

* timestream/__init__.py (TimeStream.load_pickled_image): If we know that the
file does not exists, dont try to upload from pickled file.
Put all feature writers in the same class.

We now call the same component to activate feature writing. We must specify the
type of container for the output. Choices are: csv and ndarray
* timestream/manipulate/pipecomponents.py (ResultingFeatureWriter): New class to
replace *csv and *ndarray.
(ResultingFeatureWriter.csvCheck, ResultingFeatureWriter.csvCall): Will take
care of the csv output.
(ResultingFeatureWriter.ndarrayCheck, ResultingFeatureWriter.ndarrayCall): Will
take care of the ndarray output.
(ResultingFeatureWriter_csv, ResultingFeatureWriter_ndarray): Removed unneeded
classes.
* timestream/manipulate/pipeline.py (complist): Add new "global" class and
previous specific ones.