Add a show method to the potmatrix class.

* timestream/manipulate/plantSegmenter.py (show): New method in the
ImagePotMatrix class. Will draw all pot squares (not centers) on the image.
* timestream/manipulate/pipecomponents.py (show): Uset the new show method
to show a plant extractor update.
Use CIEL*a*b. Run k-means once.

CIEL*a*b is a bit better than RGB at noticing the differences in the green
spectrum. We have a pretty good idea of where the pot is, so we don't need to
grow it. And we add a texture feature explained in Massimo et. al.
(Image-based plant phenotyping with incremental learning and active contours).
* timestream/manipulate/plantSegmenter.py (PotSegmenter_KmeansSquare.segment):
Remove the logic that grows the pot in search of a better segmentation.
(PotSegmenter_KmeansSquare.getFeatures): New method that returns color and
texture features.
Add complexity calculation

We use complexity to decide if a mask is appropriate or not. If there is too
much complexity, it usually means that the segmentation when wrong.
* timestream/manipulate/plantSegmenter.py (calcComplexity): New method in
PotSegmenter_KmeansSquare that calculates complexity. We use Parrott et. al.
2008.
(segment): We check the relation of background -vs- foreground. If there is
more FG than BG we invert the mask.
Show segmentation only when visualise is active.

* timestream/manipulate/pipecomponents.py (__call__): Remove the show call
from __call__
Add arguments to control the k-means calculation.

* timestream/manipulate/plantSegmenter.py (segment): Try calcKmeans with 20
attempts instead of 10.
(calcKmeans): We add iterations, epsilon and attempts as new arguments to our
method.
Show segmentation when segmenting

We were not actually showing the segmentation before.
* timestream/manipulate/plantSegmenter.py (ImagePotHandler): We now always
return a mask. Its completely black if we have none available.
(ps): New property. This fixes a previously hidden bug.
(mask): When the mask contains negative 1 it has not been calcuated. Mask will
only be calculated if self._ps is not none and contains -1. If self._mask does
not contain -1, we return it
(rect): Reset self._mask to all -1 when changing self._rect.
(maskedImage): This property now returns the segmentated pot within the original
image. It's like a window into the segmentation.
(show): use the new maskedImage property to build a proper segmented image to
show.
Show all plots in the same figure.

* timestream/manipulate/pipecomponents.py (show): Use plt.subplot to show
multiple plots in the same figure.
Print the current segmented pots in the same line.

* timestream/manipulate/pipecomponents.py (__call__): use \r to print the
message of the pot being segmented.
[ts.manip] remove old parallel ts iterator
fixed image rotation
back to using corresponding tray images
added small rotation angle and round-corner tray selection
added image intensity check to skip color correction if it's too low
imporve image intensity check, add to yml's colorcorrect 'minIntensity: 15' to turn on this feature
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.