update output format to the new YAML structure
Have all arguments come from the config file.

We add start datetime, end datetime and time interval to the configuration
file.
* util/pipeline_demo.py (general): Add new arguments to a global dictionary
"general".
(Comments): Update comments to reflect what we expect from the configuration
file.
Include a visualize switch in config file.

* util/pipeline_demo.py: Simplified the argument parsing. We now look for
visualise in the yaml file. We default to no visualization.
Add general pipecomponent Exception

The new exception should be used when there is an unrecoverable error in any
of the pipeline components (e.g. when tray detection does not work).
This is a way to handle things that are not yet implemented.
* timestream/manipulate/pipecomponents.py (PCExBrakeInPipeline): New general
pipeline error class.
* util/pipeline_demo.py (visualise, result): When encountering a
PCExBrakeInPipeline we output message and continue
Calculations for previous are in ImagePotHandler.

* timestream/manipulate/plantSegmenter.py (segment): Remove any handling of
the previous image in the segmenter class
(ImagePotHandler.mask): Handle the previous pot here.
Restructure mask method in ImagePotHandler

* timestream/manipulate/plantSegmenter.py (mask): We remove 2 levels of
indentation effectivelly increasing readability.
Fix bug. Replace mask with the same size.

There was an error when the previous mask was of different size than the
current one.
* timestream/manipulate/plantSegmenter.py (mask): Change size of prevous mask
to fit the current size.
Fix bug. Output the feature value not the pot id.

* timestream/manipulate/pipecomponents.py: We get the feature values
from pot.getCalcedFeatures()[fName]
Add perimeter calculations.

* timestream/manipulate/plantSegmenter.py: Add perimeter calculations.
We also removed the label calculation from area.
Add roundness to the feature calculation.

* timestream/manipulate/plantSegmenter.py: Add new roundness method.
Add the csv files to a directory under outputroot.

* timestream/manipulate/pipecomponents.py (__init__): We default to
os.path.join(context["outputroot"]), "csv")
Add compactness to the feature calculations.

Its commented out for now pending solution to
 https://github.com/scikit-image/scikit-image/issues/1075
* timestream/manipulate/plantSegmenter.py: Use skimage's "Solidity" to
calculate compactness.
Add eccentricity to the feature calculation.

The code is commented out for now as there is a bug with skimage:
https://github.com/scikit-image/scikit-image/issues/1075
* timestream/manipulate/plantSegmenter.py: We use skimage's eccentricity
option.