Bring config values from the yaml file

* timestream/manipulate/pipecomponents.py (argNames): Be more explicit about
what arguments we expect.
* timestream/manipulate/plantSegmenter.py (__init__): maxIter, epsilon and
attempts get initialized at object creation time.
(segment): Stop passing any of the arguments within the
PotSegmenter_KmeansSquare class.
(calcKmeans): Include the class attributes for the k-means calculation.
Check for segmenting method existance.

* timestream/manipulate/pipecomponents.py (__init__): Raise a ValueError if
there is no method with the name of self.method.
Use hints to default to previous mask

* timestream/manipulate/plantSegmenter.py (mask): We pass the previous iph
in the hints dictionary
(segment): We use previous mask when we think that the current mask is not
adequate.
Fix Bug. Make a copy of image when masking

We were chaning the main pot image. We now make a copy to put mask on a copy
of the main image.
* timestream/manipulate/pipecomponents.py (__call__): Use & instead of | when
masking
* timestream/manipulate/plantSegmenter.py (maskedImage): Make a copy of
self.si with self.si.copy()
(show): Use & instead of |
Make previous pots available through previous mat.

* timestream/manipulate/pipecomponents.py (PlantExtractor.__call__): Get the
previous image pot matrix from context["ipm"]. At the end make the ipm
available by replacing it in context with self.ipm.
* timestream/manipulate/plantSegmenter.py (ImagePotMatrix.__init__): Add an
argument ipmPrev that will allow for pot continuity. Use the ipmPrev to add
iphPrev to each ImagePotHandler instantiation.
* util/pipeline_demo.py (context): Stop reinitilizing the context on every
image. This allows for pipecomponents to modify the context and re-use it on
popsterior runs.
Remove ImagePotHandler from the segment call

* timestream/manipulate/plantSegmenter.py (segment): Instead of passing an
ImagePotHandler we pass an image. hints now contains the previous mask instead
of the previous ImagePotHandler.
Fix bug. Check to see if iphPrev is None

* timestream/manipulate/plantSegmenter.py (mask): Only assign a previous mask
from an existing previous pot.
Allow ResultingImageWriter to be inserted anywhere.

While ResultingImageWriter can be inserted anywhere, it will not be able to
create different output timestreams yet. We still need to add a way to define
multiple timestreams and a way to use them from inside the components.
* timestream/manipulate/pipecomponents.py (runExpects, runReturns): The
components that define their runReturns as [None] will be handled differently.
This allows for components to "tap into" the pipeline and gather information.
(__call__): These new type of components must return the same args that they
receive.
* timestream/manipulate/pipeline.py (__init__): We relax the checks on the new
component types. All the elements in the expecting list should be in the
providing list.
Add multiple output streams.

It is now possible to define and use different output streams from the yaml
configuration file. Each output streams has a name wich can be used in the
yaml config file.
* timestream/manipulate/pipecomponents.py (ResultingImageWriter.argNames): We
now expect the user to tell us to which output stream we should write the
images.
(__call__): The output steam is provided by the context.
* util/pipeline_demo.py (yfile): Contains the information from the yaml file.
(settings): Is yfile["pipeline"]
(outstreams): Is yfile["outstreams"]
(context): We now iterate through outstreams and create an output stream for
each one defined in the yaml config.
Expect an numpy.ndarray at startup.

This moves away from what we want in the end. To pass around TimeStreamImages
but it is necessary to be able to seamlessly start at any point in the
pipeline. When we do move towards TimeStreamImage, we should move all the
pipecomponents at once.
* timestream/manipulate/pipecomponents.py (runExpects): Expect a np.ndarray
instead of a TimeStreamImage.
(__call__): Don't access the pixels attribute.
* util/pipeline_demo.py (result): Initialize the pipeline with a np.ndarray.
Add context to the pipeline init.

This allows to guess the output path for all pipeline components
* timestream/manipulate/pipecomponents.py (__init__): Add context to all
initalization methods.
(ResultingFeatureWriter_csv.__init__): Get the output dir from the context if
the user has not set one.
* timestream/manipulate/pipeline.py (__init__): Add context to the init args.
We will pass the context to all the ImagePotHandlers.
* util/pipeline_demo.py: Put the output directory in the context dictionary as
"outputroot".
fixed error due to missing color card
update output format to the new YAML structure
Merge branch 'traitcapture_v0' of github.com:chuong/timestreamlib into traitcapture_v0